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

在数据库中

这看起来不像原始数据的二进制形式。对发生的事情有什么解释吗?

sql server 2005-通过XML将byte[]从C#传递到sql表

输出的字符串看起来像原始十六进制字符串的小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(字段值)获取原始字节数据