2014-10-09 291 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