Oracle 12c相当于C#编码.ASCII.GetBytes



我正在尝试模仿Oracle 12c中的C#函数Encoding.ASCII.GetBytes。我快到了,但不明白为什么我会得到以下结果:

Oracle

declare
l_string                varchar2(4000) := 'Test';
begin
dbms_output.put_line(utl_raw.cast_to_raw(l_string));
end;

其输出为:

54657374

C#

internal static string ConvertTest()
{
var inputString = "Test";
Console.WriteLine(BitConverter.ToString(Encoding.ASCII.GetBytes(inputString)));
}

其输出为:

54-65-73-74

所以我似乎快到了,但我不明白为什么C#在每个字节之间都有"-",而Oracle没有。

是否有一个Oracle函数来复制C#的输出?

谢谢。

utl_raw.cast_to_raw不会在每个字符的字节码之间放入'-'。我认为没有一种直接的方法可以获得预期格式的一系列字节码。

一种解决方法是,循环遍历每个字符,并在每次迭代后附加"-"。

样本代码-

declare
l_string                varchar2(4000) := 'Test';
l_result                varchar2(4000) := '';
begin
for idx in 1 .. length(l_string)
loop
l_result := l_result || utl_raw.cast_to_raw(SUBSTR(l_string,idx,1));
if idx != length(l_string) then
l_result := l_result || '-';
end if;
end loop;
dbms_output.put_line(l_result);
end;

我想我追错东西了!

utl_raw.cast_to_raw相当于Encoding.ASCII.GetBytes((。实际上是BitConverter.ToString在每个字节之间插入"-"。

谢谢你的帮助!

相关内容

  • 没有找到相关文章

最新更新