[英]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.