【问题标题】:C# - Trying to convert string (with HEX) to display extended ASCII chars in TextBoxC# - 尝试转换字符串(使用 HEX)以在 TextBox 中显示扩展的 ASCII 字符
【发布时间】:2016-01-07 11:21:04
【问题描述】:

我正在尝试使用十六进制 FFFFFFFF7DA98035 获取字符串,并在我的程序的 TextBox 中显示其扩展的 ASCII 字符。我在将 80 设为 -128 时遇到问题,但什么也没有显示。

Visual Studio 编译没有错误,但在解析字符串时抛出异常。

private static string ConvertHextoAscii(string HexString)
{
    byte[] data = new byte[HexString.Length / 2];

    for (int i = 0; i < HexString.Length - 1; i += 2)
    {
        data[i / 2] = byte.Parse(HexString.Substring(i, 2));
    }

    return Encoding.GetEncoding("Windows-1252").GetString(data);
}

任何帮助将不胜感激。

【问题讨论】:

  • 实际抛出的异常是什么?
  • ideone.com/WDA0ue检查此代码
  • "FFFFFFFF7DA98035" 不包含足够合理的“扩展 ASCII 字符”,并且不代表任何人类语言的字符串。只有使用 BitConverter.ToString(data) 才能产生可​​识别的东西。

标签: c# encoding hex ascii


【解决方案1】:

byte.Parse 需要一个包含整数(十进制)的字符串。但是,HexString.Substring(i, 2) 将返回一个十六进制数字(作为字符串)。

执行以下操作以指示 byte.Parse 期待一个十六进制数:

data[i / 2] = byte.Parse(HexString.Substring(i, 2), NumberStyles.HexNumber);

【讨论】:

  • Convert.ToByte(HexString.Substring(i, 2), 16);
猜你喜欢
  • 2012-01-20
  • 2013-04-01
  • 2013-03-19
  • 2022-01-14
  • 1970-01-01
  • 2020-08-23
  • 1970-01-01
  • 2015-04-26
相关资源
最近更新 更多