从 ORACLE的RAWTOHEX到C#的RAWTOHEX

编程入门 行业动态 更新时间:2024-10-26 22:23:32

从 <a href=https://www.elefans.com/category/jswz/34/1770041.html style=ORACLE的RAWTOHEX到C#的RAWTOHEX"/>

从 ORACLE的RAWTOHEX到C#的RAWTOHEX

我们先了解一下基本知识:

     我们知道Oracle中有函数RAWTOHEX(rawvalue),将RAW类数值转换成一个相应的16进制表示的字符串,rawvalue中的每个字节都被转换成为一个双字节的字符串。当我们给数据表中的ID定义成RAW(16)类型时,用RAWTOHEX(ID)得到的将是一个用16进制表示的字符串,该字符串的长度是32。同理RAW(8)得到的应该是一个长度为16的字符串。

ORACLE中有一个SYS_GUID()函数,返回的是唯一的16进制表示的字符串,长度也是32.因此我们可以给RAW(16)类型的ID设置默认值为:SYS_GUID(),但不能给字节数小于16的RAW类型设置SYS_GUID(),会提示长度超出范围。

 

接下来就是我遇到的问题了,通常我们在PL/SQL中写查询语句时都这么写:select ID from test,看到的ID显示为已经被RAWTOHEX过的数据,比如:A03BDB52E4800D74E044001321BD1C8B,但我们在C#中查询ORACLE数据库时,会将RAW(16)类型的ID返回为一个 byte[]数组,长度为16.这和我们在PL/SQL中看到的ID是不一样的。有时候在调试代码时想看看这个ID是不是我们想要的ID时很不方便。因此我们有必要吧这个数组转换成和PL/SQL中一样的数据显示。

我们上面已经了解到这个byte[]数组中的每一个byte都被转换成了一个双字节的字符串,我们在C#中也定义一个RAWTOHEX函数,如下:

[c-sharp]  view plain copy
  1. static string RAWTOHEX(byte[] b)  
  2.   {  
  3.       StringBuilder sb = new StringBuilder();  
  4.       foreach (byte by in b)  
  5.       {  
  6.           string s = Convert.ToString(by, 16);//将字节转换成对应的字符  
  7.           if (s.Length==1)  
  8.           {  
  9.               s = "0" + s;//当字符不足两位时,在前面补0,补足两位字符,因为字符串“01”转换成的字节为1,而将字节再转换成字符串的时候就变成了“1”,因此要补0  
  10.           }  
  11.           sb.Append(s);  
  12.       }  
  13.       return sb.ToString().ToUpper();  
  14.   }  
,同理,我们也可以定义一个HEXTORAW将16进制表示的字符串转换成byte[]数组方便插入数据库。

[c-sharp]  view plain copy
  1.         static byte[] HEXTORAW(string str)  
  2. {  
  3.     if (str.Length % 2 == 0)  
  4.     {  
  5.         byte[] b = new byte[str.Length / 2];  
  6.         int j = 0;  
  7.         for (int i = 0; i < str.Length; i += 2)  
  8.         {  
  9.             byte by = Convert.ToByte(str.Substring(i, 2), 16);//取两个字符,转换成对应的字节  
  10.             b[j] = by;  
  11.             j++;  
  12.         }  
  13.         return b;  
  14.     }  
  15.     else  
  16.     {  
  17.         throw new Exception("不能将该字符串转换成RAW类型");  
  18.     }  
  19. }  

更多推荐

从 ORACLE的RAWTOHEX到C#的RAWTOHEX

本文发布于:2024-03-13 23:02:06,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1735082.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:ORACLE   RAWTOHEX

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!