2014-06-14 30 views
-1

我需要在MySQL中使用HEX()從數據庫中獲取數據並使用C#WinForm代碼進行處理。二進制字符串需要在C#中解碼,是否有一個等效的UNHEX()函數?如何在C#.NET中使用UNHEX()MySQL二進制字符串?

從MySQL文檔:

對於字符串參數STR,HEX()返回STR其中str中每個字符的每個字節是 轉換爲兩個十六進制數字的十六進制字符串 表示。 (因此多字節字符 變爲兩位數以上。)此操作的反轉操作是由UNHEX()函數執行的 。

對於數值參數N,HEX()返回一個十六進制字符串 將N的值表示視爲longlong(BIGINT) 數字。這相當於CONV(N,10,16)。 CONV(HEX(N),16,10)執行該操作的逆操作。 ('abc'),UNHEX(HEX('abc')); - >'abc',616263,'abc'mysql> SELECT HEX(255),CONV(HEX(255),16,10); - >「FF」,255

+0

你問的十六進制,但你的標題是「UNHEX」?! – arviman

回答

2

你可以使用這個並不廣爲人知的SoapHexBinary類來解析十六進制字符串

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

謝謝。這工作完美! – ytk

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

的方法建立從的十六進制格式的字符串數字,它們的字符表示被連接到構建器分支。

相關問題