【问题标题】:Character representation of bytes greater then 0x75 (127)大于 0x75 (127) 的字节的字符表示
【发布时间】:2014-05-06 14:53:56
【问题描述】:

是否有可能在 c# 中获得大于 0x7F 字节的字符/字符串编码

目前我从任何大于 0x7F 的字节中得到 0x3f (?),我想这是一个错误字符,因为没有相应的字符。

我需要构建一个字节[],不幸的是(由于我无法控制的代码结构)这必须作为字符串在我的程序中传递,每个字符代表一个字节。我的 byte[] 需要它的一些字节大于 0x7F 但字符串不能处理这些字符。要编码为字符的值只是整数,没什么特别的,但在 0-255 范围内。

例子:

说我希望我的 byte[] 为 3 个字节 {0x2E, 0x55, 0x8D}

我希望我的字符串表示形式类似于“.U\x8D”
但相反我得到“.U?”转换为不正确的字节数组

【问题讨论】:

  • 你从哪里得到的?从数据库读取?从文件中读取?在视觉工作室?打印时?最好贴一些示例代码
  • @Uriel_SVK 我从Chr.ConvertFromUtf32(0x8d) 得到它,我希望它会返回一个字符的编码,但它会返回字符?

标签: c#


【解决方案1】:

如果你能忍受 33% 的存储开销,最简单的解决方案似乎是 Base64 编码:

byte[] bytes = {0x2e, 0x55, 0x8d};
string str = Convert.ToBase64String(bytes);
byte[] bytes2 = Convert.FromBase64String(str);

【讨论】:

    【解决方案2】:

    不知道是否可以按照您想要的方式制作。字符串是 unicode 字符的表示。 Unicode 0x8dREVERSE LINE FEED,所以在字符串中它用? 表示。其他控制字符也是如此(如 0x01、0x02、...)

    如果您必须像字符串一样发送它,您可以尝试使用逗号分隔的字符列表 (1,2,141,255),这可能是您问题的最佳解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-10
      • 1970-01-01
      • 1970-01-01
      • 2014-07-05
      • 2021-11-15
      • 1970-01-01
      • 2018-06-12
      相关资源
      最近更新 更多