繁体   English   中英

Oracle 12c 相当于 C# Encoding.ASCII.GetBytes

[英]Oracle 12c equivalent to C# Encoding.ASCII.GetBytes

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

Oracle

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

output 是:

54657374

C#

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

output 是:

54-65-73-74

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

是否有 Oracle function 从 ZD7EFA19FBE7D2372FD5ADB6024 复制 output

谢谢。

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

一种解决方法是,在每次迭代后循环遍历每个字符和 append '-'。

示例代码 -

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 实际上是在每个字节之间插入“-”。

谢谢你的帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM