我编写了两种方法将Hex字符串转换为ASCII,将ASCII字符串转换为Hex字符串。但是当我比较两个字符串时,我得到了两个不同的Hex字符串。
例如: 十六进制字符串= 6220000008a01000
我使用以下方法将此字符串转换为ASCII
public static string ConvertHex(string hexString)
{
try
{
string ascii = string.Empty;
for (int i = 0; i < hexString.Length; i += 2)
{
string hs = string.Empty;
hs = hexString.Substring(i, 2);
ulong decval = Convert.ToUInt64(hs, 16);
long deccc = Convert.ToInt64(hs, 16);
char character = Convert.ToChar(deccc);
ascii += character;
}
return ascii;
}
catch (Exception ex) { Console.WriteLine(ex.Message); }
return string.Empty;
}
我使用以下方法将该ASCII值转换回十六进制字符串
public string ASCIItoHex(string Value)
{
StringBuilder sb = new StringBuilder();
byte[] inputByte = Encoding.UTF8.GetBytes(Value);
foreach (byte b in inputByte)
{
sb.Append(string.Format("{0:x2}", b));
}
return sb.ToString();
}
但是作为最后的十六进制字符串,我得到了字符串。
十六进制字符串= 6220000008c2a01000
任何人都可以帮我弄清楚那里发生了什么吗?
答案 0 :(得分:0)
您尝试将十六进制字符串的两个字符(如“FF”)表示为单个char
。这不起作用。
您的“hexString”已经是十六进制数字的字符串表示形式。