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

本文关键字:十六进制 转换 文本 定义 新定义 | 更新日期: 2023-09-27 18:21:23

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

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

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

我不确定如何做到这一点,并强制它使用静态Dictionary定义的值。

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

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

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

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,因此该字符永远不会出现。