2012-11-20 50 views
0

我期待在C#中編寫Oracle函數rawtohex。 我正在查看已編寫的現有代碼,並希望確認它是否準確。在C#中實現Oracle的RAWTOHEX功能

public static string AsHexString1(this char[] chars) 
{ 
    StringBuilder sb = new StringBuilder(); 

    foreach (var ch in chars) 
    { 
     int lowNibble = (int)ch % 16; 
     int highNibble = (int)ch/16; 

     sb.Append(highNibble <= 9 ? highNibble.ToString() : ((char)('A' + (highNibble - 10))).ToString()); 
     sb.Append(lowNibble <= 9 ? lowNibble.ToString() : ((char)('A' + (lowNibble - 10))).ToString()); 
    } 

    return sb.ToString(); 
} 

謝謝。

回答

3

據我所知,RAWTOHEX應該與此類似:

public static string RawToHex(byte[] data) 
{ 
    StringBuilder sb = new StringBuilder(); 
    for (int i = 0; i < data.Length; i++) 
     sb.AppendFormat("{0:X2}", data[i]); 
    return sb.ToString(); 
} 

我不知道爲什麼你使用的是字符數組作爲輸入,因爲它的原始數據。 ..

+0

我不確定要麼是誠實的,因爲它不是我的代碼。正在執行的數據以char(80)形式存儲在db中。 –

+1

@ pwee167'rawtohex'總是在原始數據上執行。數據庫將該函數應用於其字符集中列的字節表示(強制轉換)。如果數據庫不使用unicode(或相同的編碼風格),則可能會有字符集轉換差異 –