我寫了兩種方法將十六進制字符串轉換爲ASCII和ASCII字符串爲十六進制字符串。但是當我比較兩個字符串時,我得到兩個不同的十六進制字符串。十六進制字符串到ASCII轉換和ASCII到十六進制轉換問題
例如: 十六進制字符串= 6220000008a01000
我轉換這個字符串使用以下方法
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和我使用以下方法轉換該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
誰能幫我弄明白在那裏發生什麼事?
您正在轉換爲十六進制UTF8編碼的字符串。您將轉換回_plain_字符串逐字節讀取,假設流爲... ASCII。不是。 UTF8字符串中的某些字符可能不止一個字節。 – 2015-03-19 11:15:56
事實上,任何帶有0xa0的二進制數據都是* not * ASCII ...(實際上,您現在正在使用ISO-8859-1對其進行轉換,但仍與UTF-8不同)。 – 2015-03-19 11:16:46
將十六進制轉換爲ASCII。當我將相同的ASCII值轉換回十六進制時,它顯示不同的值。 – soft009 2015-03-19 11:19:24