2014-10-09 293 views
1

我需要將一個數字處理爲字符串。將HexNumber作爲字符串轉換爲字符串

我的價值是0x28這是'('的ASCII碼。

我需要將它分配給一個字符串。

以下行可以做到這一點。

char c = (char)0x28; 
string s = c.ToString(); 

string s2 = ((char)0x28).ToString(); 

我的用例是一個只接受字符串的函數。 我通話結束了眼花繚亂的感覺:

someCall(((char)0x28).ToString()); 

有簡化這一點,並使其更具可讀性,而無需編寫'('的一種方式?

代碼中的Hexnumber始終與其名稱中包含該十六進制值的變量配對,因此「翻譯」它會破壞該可見連接。

編輯:

元組的列表被初始化與此其中第一個項目在其名稱和性質從與字符調用中的第二項結果。

下面的答案之一正是我所期待的,所以我現在把它合併到這裏。

{ existingStaticVar0x28, someCall("\u0028") } 

讀者現在可以看到本能和物品1和ITEM2不太可能在這個被重構碰上一個陷阱之間的連接。

+1

你的示例代碼(和問題文本)並沒有真正說明你爲什麼不能簡單地執行'someCall(「(」)'。你能詳細說明一下嗎? – Alex 2014-10-09 12:33:24

+1

@亞歷克斯:我編輯了我的帖子來詳細說明 – Johannes 2014-10-09 12:57:29

回答

2

那麼假設你有沒有一個固定的輸入,那麼你可以寫一個extension method

namespace MyExtensions 
{ 
    public static class MyStringExtensions 
    { 
     public static string ConvertFromHex(this string hexData) 
     { 
      int c = Convert.ToInt32(hexCode, 16); 
      return new string(new char[] {(char)c}); 
     } 
    } 
} 

現在你可以在你的代碼中調用它wjth

string hexNumber = "0x28"; // or whatever hexcode you need to convert 
string result = hexNumber.ConvertFromHex(); 

應該在上面的轉換中添加一些錯誤處理。

+0

這應該不是'ConvertHexToString'嗎? – 2014-10-09 13:19:36

+0

哦,等等,命名總是最困難的部分。那麼ConvertFromHex呢?它是一個字符串。 – Steve 2014-10-09 13:43:47

+0

無論你認爲合適,我只是發現'string result = hexNumber.ConvertHexToChar'奇數因爲它返回一個'string' :) – 2014-10-09 15:08:16