如何在C#.NET中使用UNHEX()MySQL二进制字符串?

时间:2014-06-14 09:45:41

标签: c# mysql string

我需要在MySQL中使用HEX()从数据库中获取数据并使用C#WinForm代码进行处理。二进制字符串需要在C#中解码,是否有等效的UNHEX()函数?

来自MySQL Doc:

  

对于字符串参数str,HEX()返回十六进制字符串   str的表示,str中每个字符的每个字节   转换为两个十六进制数字。 (因此多字节字符   变成两位数以上。)此操作的反转是   由UNHEX()函数执行。

     

对于数字参数N,HEX()返回十六进制字符串   N的值表示为longlong(BIGINT)   数。这相当于CONV(N,10,16)。与此相反   操作由CONV(HEX(N),16,10)执行。

     

的MySQL> SELECT 0x616263,HEX(' abc'),UNHEX(HEX(' abc'));            - > ' abc',616263,' abc' MySQL的> SELECT HEX(255),CONV(HEX(255),16,10);            - > ' FF',255

2 个答案:

答案 0 :(得分:2)

您可以使用此广为人知的SoapHexBinary类来解析十六进制字符串

string hex = "616263";
var byteArr = System.Runtime.Remoting.Metadata.W3cXsd2001.SoapHexBinary.Parse(hex).Value;
var str = Encoding.UTF8.GetString(byteArr);

答案 1 :(得分:1)

从数据库中获取二进制字符串后,您可以" unhex"就这样:

public static string Hex2String(string input)
{
    var builder = new StringBuilder();
    for(int i = 0; i < input.Length; i+=2){ //throws an exception if not properly formatted
        string hexdec = input.Substring(i, 2);
        int number = Int32.Parse(hexdec, NumberStyles.HexNumber);
        char charToAdd = (char)number;
        builder.Append(charToAdd);
    }
    return builder.ToString();
}

该方法从数字的十六进制格式构建一个字符串,它们的char表示连接到构建器分支。