2014-09-10 66 views
0

我正在嘗試編寫一個將ASCII文本轉換爲十六進制值的程序。問題是我正在處理一個項目,該項目對ASCII字符使用不同於十六進制值的標準,因此我必須將預定義字符集(使用'靜態字典')合併到轉換中。C#:使用重新定義的十六進制值進行文本到十六進制轉換

我的意圖是讓它設置2個文本框,其中我輸入到ASCII輸出和另一個打印十六進制值。

如果我輸入ASCII字符串「傑克」,我想要一個窗口返回4b 62 64 6c。 (是的,所有的十六進制值被移動一個,不要問....不是我的電話)

我不確定如何做到這一點,並強制它使用由靜態字典定義的值。

回答

1

將字典定義爲Dictionary<char, int>,並將每個char作爲關鍵字並將修改的十六進制值作爲value

通過這種方式進行轉換時,只需查找字典中的十六進制值即可。

var x = MyStrangeHexValuesThatWeShouldntAskAbout[myChar]; 
1

此解決方案僅適用於ASCII字符:

public static string ToMySpecialAsciiString(string input) 
{ 
    StringBuilder result = new StringBuilder(); 

    foreach (char c in input) 
     result.AppendFormat("{0:x2} ", c + 1); 

    return result.ToString(); 
} 

注意字符ÿ將無法正常工作(因爲它值255,並加入1〜便會溢出一個字節)。但是,由於您只指定了ASCII,所以該字符將永遠不會發生。