sql server 2005-通过XML将byte[]从C#传递到sql表
本文关键字:sql 2005-通过 server XML byte | 更新日期: 2023-09-27 17:57:58
我基本上已经计算了SHA512哈希,并以byte[]的形式获得它,我所想做的就是将它存储在我的数据库中,当前的基础设施是这样的,我需要创建我的数据的XML,并且这个XML会传递给插入数据的SP。因此流量变成
byte[]->字符串(使用BitConverter)->XML->二进制(64)(使用OPENXML)
我认为这是可以改进的,但不幸的是,我无法更改基础设施,所以XML必须介于两者之间,而且发生的情况是,我拥有的XML数据-
1031B4BFC79B4E6357FE271FF2313D37A90E29FCAAEC850E5C4044547C1184AE
成为
0x30100300033003100420004004004004430039004200040045030033003500370046004500320037003100460032000330031003300440033003700
在数据库中
这看起来不像原始数据的二进制形式。对发生的事情有什么解释吗?
输出的字符串看起来像原始十六进制字符串的小EndianUnicode。
即,0x3100表示"1",0x3000表示"0",0x3300表示"3",0x3100代表"1"、0x4200代表"B"等。
如果我是你,我不会使用BitConverter来达到这样的目的。
使用
Convert.FromBase64String(string s);
和
Convert.ToBase64String(byte[] inArray);
相反。
如果您想了解有关Base64及其结构的更多信息,请查看Base64基于维基百科
如果这没有帮助,请提供有关您的问题的更多信息和代码
当您将字节数组编码为64进制时,其原始数据的字符串表示因此您可以使用Convert.FromBase64String(字段值)获取原始字节数据