【问题标题】:Base64 in C# and PL/SQL?C# 和 PL/SQL 中的 Base64?
【发布时间】:2011-01-25 15:54:03
【问题描述】:

在 PL/SQL 中,如何将字符串(带有换行符和标签的长 HTML 字符串等)转换为易于在 C# 中解密的 Base64?

在 C# 中有:

Convert.ToBase64String()
Convert.ToBase64CharArray()
BitConverter.ToString()

哪一个兼容PL/SQL

utl_encode.base64_encode();

?

我欢迎任何其他建议:-)

【问题讨论】:

  • 看起来您回答了自己的问题。为什么不让它成为下面的“答案”?
  • 我不确定你的意思是什么?
  • @AdamHawkes 的意思是utl_encode.base64_encode(); 在 PL/SQL 中进行 Base64 编码。 @数据库
  • 等等,好的,我明白了!现在我明白了,这不是关于存储过程,而是关于 C# 方法。

标签: c# string plsql base64


【解决方案1】:

您可能想要使用此方法:

Convert.ToBase64String()

它返回一个基于无符号 8 位整数(字节)数组的 Base64 编码字符串。

作为替代,您可以使用Convert.ToBase64CharArray(),但输出是一个字符数组,这有点奇怪,但在某些情况下可能有用。

BitConverter.ToString() 方法返回一个字符串,但字节以十六进制表示,而不是 Base64 编码。

【讨论】:

  • 谢谢,但哪一个给我的结果与 utl_encode.base64_encode();在 PL/SQL 中?我问是因为现在我无法访问我的 Oracle 数据库,干杯
  • 很难说哪个最接近。 UTL_ENCODE.BASE64_ENCODE 有一个 RAW 参数并返回一个 RAW。然后必须将该 RAW 转换为字符串 (VARCHAR2) 以匹配 Convert.ToBase64String 的输出。
【解决方案2】:

我做到了:-)

PL/SQL

s1 varchar2(32767);
s2 varchar2(32767);

s2:= utl_raw.cast_to_varchar2(utl_encode.base64_encode(utl_raw.cast_to_raw(s1)));
s2:= utl_raw.cast_to_varchar2(utl_encode.base64_decode(utl_raw.cast_to_raw(s1)));

与 C# 兼容

public static string ToBase64(string str)
{
         return Convert.ToBase64String(Encoding.UTF8.GetBytes(str));
}

//++++++++++++++++++++++++++++++++++++++++++++++

public static string FromBase64(string str)
{
         return Encoding.UTF8.GetString(Convert.FromBase64String(str));
}

希望你觉得它有用:-)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    相关资源
    最近更新 更多