c# - 将 SQL 二进制转换为字节数组

标签 c#

给定一些存储在 SQL 二进制字段中的数据:

0x83C8BB02E96F2383870CC1619B6EC...

我想将它转换成一个字节数组,但似乎我不能像这样直接将它转换成一个字节:

byte[] someBytes = (byte) 0x83C8BB02E96F2383870CC1619B6EC...;

我在这里错过了什么?

最佳答案

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");
}

如果您的二进制数据以不同于复制/粘贴字符串的形式来自您的数据库,您将需要提供有关您的设置的更多信息。

关于c# - 将 SQL 二进制转换为字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3916049/

相关文章:

c# - 动态创建服务引用和使用服务

c# - TableAdapter 做奔腾数学

c# - 比较两个数据行

c# - MonoTouch.Foundation.MonoTouchException 已抛出 Objective-C 抛出的异常。名称 : NSInternalInconsistencyException

c# - 当基类型列表包含基类和接口(interface)时,基类必须在列表中排在第一位

c# - 无法在每个其他请求中创建 SSL/TLS 安全通道

javascript - 如何在asp.net mvc中访问 session 变量?

c# - CloudConfigurationManager.GetSetting(<setting>, false); 的完整、直接的 .NET Core 等效项是什么?

c# - 使用更新面板从代码后面更改 CSS 类 - 不起作用

C# Unity GetKeyDown() 未被正确检测到