Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过XML将字节[]从C#传递到sql表_C#_Sql Server 2005_Binary_Bytearray - Fatal编程技术网

通过XML将字节[]从C#传递到sql表

通过XML将字节[]从C#传递到sql表,c#,sql-server-2005,binary,bytearray,C#,Sql Server 2005,Binary,Bytearray,我基本上已经计算了SHA512散列,得到的是字节[],我只想把它存储在我的数据库中,当前的基础设施是这样的,我需要创建一个数据的XML,这个XML被传递给一个SP,SP插入数据。因此,流变得 字节[]->字符串(使用位转换器)->XML->二进制(64)(使用OPENXML) 我认为这是可以改进的,但不幸的是,我无法更改基础结构,因此XML必须介于两者之间,而且发生的事情是我拥有的XML数据- 1031B4BFC79B4E6357FE271FF2313D37A90E29FCAAEC850E5C4

我基本上已经计算了SHA512散列,得到的是字节[],我只想把它存储在我的数据库中,当前的基础设施是这样的,我需要创建一个数据的XML,这个XML被传递给一个SP,SP插入数据。因此,流变得

字节[]->字符串(使用位转换器)->XML->二进制(64)(使用OPENXML)

我认为这是可以改进的,但不幸的是,我无法更改基础结构,因此XML必须介于两者之间,而且发生的事情是我拥有的XML数据-

1031B4BFC79B4E6357FE271FF2313D37A90E29FCAAEC850E5C4044547C1184AE

变成

0x3100300033003100420034042004600043003700390042003404500360033003500370046004500320037031004600046003200330003300440033003700

在数据库中


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

如果我是你,我就不会为了这个目的使用位转换器

使用

相反

如果您想了解有关Base64及其结构的更多信息,请参阅


如果这没有帮助,请提供有关您的问题的更多信息和代码

如果我是您,我不会为此使用BitConverter

使用

相反

如果您想了解有关Base64及其结构的更多信息,请参阅


如果这没有帮助,请在对字节数组进行编码以使其以原始数据的字符串表示形式为基础时,提供有关问题的更多信息和代码 因此可以使用Convert.FromBase64String(fieldvalue)
当您将字节数组编码为原始数据的字符串表示形式的基64时,获取原始字节数据 因此可以使用Convert.FromBase64String(fieldvalue)
要获取原始字节数据,输出的字符串看起来像原始十六进制字符串的小端Unicode


例如,0x3100表示“1”,0x3000表示“0”,0x3300表示“3”,0x3100表示“1”,0x4200表示“B”,等等。

输出的字符串看起来像原始十六进制字符串的小端Unicode


例如,0x3100表示“1”,0x3000表示“0”,0x3300表示“3”,0x3100表示“1”,0x4200表示“B”,等等。

谢谢,我会记得,但是为什么我们不使用Convert.ToBase128String,它应该使用两倍的符号,我们有很多。我想知道当您想使用基于文本的系统(如http协议)或仅使用xml传输字节数组时,最紧凑的formbase 64是什么。base 64将每6位映射为8位表示。正如您在参考链接中看到的,有64个字符可以在基于文本的媒体中安全传输,但我不相信有128个字符。也许这就是为什么我们没有128号基地。关于压缩,当您将其转换为基数64时,您的大小将以8/6(或4/3)的比率增长。我希望我能帮上忙,汉克斯,我会记得的,但是我们为什么不转换一下呢。ToBase128String,它应该使用两倍多的符号,我们有很多。我想知道当您想使用基于文本的系统(如http协议)或仅使用xml传输字节数组时,最紧凑的formbase 64是什么。base 64将每6位映射为8位表示。正如您在参考链接中看到的,有64个字符可以在基于文本的媒体中安全传输,但我不相信有128个字符。也许这就是为什么我们没有128号基地。关于压缩,当您将其转换为基数64时,您的大小将以8/6(或4/3)的比率增长。我希望我能帮忙
Convert.FromBase64String(string s);
Convert.ToBase64String(byte[] inArray);