C#:使用重新定义的十六进制值进行文本到十六进制的转换
本文关键字:十六进制 转换 文本 定义 新定义 | 更新日期: 2023-09-27 18:21:23
我正试图编写一个程序,将ASCII文本转换为十六进制值。问题是,我正在处理一个项目,该项目使用与标准不同的ASCII字符十六进制值,因此我必须将预定义的字符集(使用"静态字典")合并到转换中。
我的意图是用两个文本框来设置它,一个是我键入ASCII输出,另一个是打印十六进制值。
如果我输入ASCII字符串"Jack",我希望窗口返回4b 62 64 6c。(是的,所有十六进制值都偏移了一,不要问……不是我的决定)
我不确定如何做到这一点,并强制它使用静态Dictionary定义的值。
将字典定义为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,因此该字符永远不会出现。