C#:使用重新定义的十六进制值将文本转换为十六进制

C#:使用重新定义的十六进制值将文本转换为十六进制,c#,hex,ascii,converter,C#,Hex,Ascii,Converter,我正在尝试编写一个程序,将ASCII文本转换为十六进制值。问题是,我正在处理一个项目,该项目对ASCII字符使用的十六进制值与标准不同,因此我必须将预定义的字符集(使用“静态字典”)合并到转换中 我的目的是用两个文本框设置它,一个是我输入ASCII输出,另一个是打印十六进制值 如果我输入ASCII字符串“Jack”,我希望窗口返回4b 62 64 6c。(是的,所有十六进制值都移位了一位,不要问……不是我的电话) 我不确定如何执行此操作,并强制它使用静态字典定义的值。将字典定义为字典,并将每个字

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

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

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


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

将字典定义为
字典
,并将每个
字符
作为键,修改后的十六进制值作为

var x = MyStrangeHexValuesThatWeShouldntAskAbout[myChar];
这样,在转换时,只需在字典中查找十六进制值

var x = MyStrangeHexValuesThatWeShouldntAskAbout[myChar];

此解决方案仅适用于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,因此该字符永远不会出现