鉴于存储在SQL二进制字段中的一些数据:
0x83C8BB02E96F2383870CC1619B6EC...
我想将它转换为字节数组,但似乎我不能直接将其转换为如下字节:
byte[] someBytes = (byte) 0x83C8BB02E96F2383870CC1619B6EC...;
我在这里缺少什么?
答案 0 :(得分:4)
存储在SQL字段中的数据是二进制的。您引用的'0x83 ..'字符串只是该二进制数据的十六进制表示。
如果您只想将十六进制数据复制/粘贴到C#代码中(如您所写),那么您需要将其从十六进制转换为二进制。 .NET为这类事情提供了一个(相当模糊的)类:
using System.Runtime.Remoting.Metadata.W3cXsd2001.SoapHexBinary
public byte[] ToBytes(string hex)
{
var shb = SoapHexBinary.Parse(hex);
return shb.Value;
}
public void TestConvert()
{
byte[] someBytes = ToBytes("83C8BB02E96F2383870CC1619B6EC");
}
如果您的二进制数据来自数据库的格式与复制/粘贴字符串不同,则需要提供有关设置的更多信息。
答案 1 :(得分:0)
您的投射错误。
byte[] someBytes = (byte[]) 0x83C8BB02E96F2383870CC1619B6EC...;
我遇到了同样的问题,偶然发现了这个问题。经过进一步的研究,我尝试像上面那样进行铸造,并且效果很好。