字节的字符表示大于0x75(127)

时间:2014-05-06 05:59:18

标签: c#

是否可以在c#

中获得大于0x7F的字节/字符串编码

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

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

示例:

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

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

不知道是否可以按照您的意愿制作它。 String是unicode字符的表示。 Unicode 0x8dREVERSE LINE FEED,因此在字符串中以?表示。其他控制字符(如0x01,0x02,...)

也是如此

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