C#:带有重新定义的十六进制值的文本到十六进制转换

时间:2014-09-10 08:26:49

标签: c# hex ascii converter

我正在尝试编写一个将ASCII文本转换为十六进制值的程序。问题是我正在使用一个项目,该项目使用与标准不同的ASCII字符的十六进制值,因此我必须将预定义的字符集(使用'静态字典')合并到转换中。

我的目的是让它设置2个文本框,一个用于输入ASCII输出,另一个用于打印十六进制值。

如果我输入ASCII字符串" Jack",我希望窗口返回4b 62 64 6c。 (是的,所有十六进制值都移一,不要问......不是我的电话)

我不确定如何执行此操作并强制它使用静态字典定义的值。

2 个答案:

答案 0 :(得分:1)

将字典定义为Dictionary<char, int>,并将每个char作为关键字,将修改后的十六进制值设为value

转换时,只需在字典中查找十六进制值即可。

var x = MyStrangeHexValuesThatWeShouldntAskAbout[myChar];

答案 1 :(得分: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,因此该字符永远不会出现。