【问题标题】:Converter Hexdecimal [duplicate]转换器十六进制[重复]
【发布时间】:2014-10-28 02:00:04
【问题描述】:

我有一个这样的 ascii 字符的文档:

~recÛßå  ^ÿìü   P       ` pÀ 0Ðÿp àÀ
```^^ÚÞâ  ^ÿòüü P      ÿ ÿà 0ÿ 0ÿÐ €
```^^ÚÞã     hÿòüü T

等等

现在我希望这些字符转换成这样的十六进制字符:

037E038D03720365036301DB01DF01E50012005EFFEC0FFC0000005000000000000000600090027001C0003001D0FF7000E003C00D036003600360035E035E01DA01DE01E20012005EFFF20FFC0FFC0050000000000000FFA0FFE002200130FFA00130FFD0012003800D036003600360035E035E01DA01DE01E300090068FFF20FFC0FFC0054

我的代码:

var byteArray = Encoding.UTF8.GetBytes(inputAscii);
var hexchars = "";
var i = 0;
while (i != byteArray.Length)
{
    hexchars += (byteArray[i]).ToString("X2");
}

我也试过 var byteArray = Encoding.Default.GetBytes(inputAscii);和编码ASCII。你能帮助我吗?

【问题讨论】:

  • 旁注:这些不是“ASCII 字符”。
  • 您可能希望将文件作为二进制而不是文本读取。
  • 这篇文章是重复的,因为转换字节->十六进制被覆盖了很多次。请注意,您的代码缺少i++(或使用for/foreach),但不清楚是复制/粘贴错误还是实际问题,因为您没有发布代码有什么问题。
  • 我的问题是,例如对于字符“”,我的代码使用 3F 而不是 8D 对其进行编码

标签: c# hex ascii converter


【解决方案1】:

试试这个:

var e = Encoding.GetEncoding("iso-8859-1");
            var bytes = Encoding.GetEncoding(1252).GetBytes("~recÛßå ^ÿìü P  pÀ 0Ðÿp àÀ^^ÚÞâ ^ÿòüü P ÿ ÿà 0ÿ 0ÿÐ € `^^ÚÞã hÿòüü T usw.");
            var s = e.GetString(bytes);

            var hexchars = "";
            for (int i = 0; i < bytes.Length; i++ )
            {
                hexchars += (bytes[i]).ToString("X2");
            }

【讨论】:

  • 结果是:036003600360035E013F01 usw 但我需要结果 037E038D03720365036301DB01DF01E50 usw..
猜你喜欢
  • 2013-06-13
  • 2017-12-30
  • 1970-01-01
  • 2019-01-27
  • 2016-12-27
  • 2013-06-16
  • 2013-06-18
  • 2018-03-08
  • 1970-01-01
相关资源
最近更新 更多