是否可以在c#
中获得大于0x7F的字节/字符串编码此刻我从任何这些字节得到0x3f(?)大于0x7F,我想这是一个错误字符,因为没有相应的字符。
我需要构建一个byte []并且不幸(由于代码结构我无法控制),这必须作为字符串传递给我的程序,每个字符代表一个字节。我的byte []需要一些字节大于0x7F,但字符串不能处理这些字符。要编码为字符的值只是内注,没有什么特别的,但是在0-255范围内。
示例:
说我希望我的byte []为3个字节{0x2E,0x55,0x8D}
我希望我的字符串表示形式为“.U \ x8D” 但相反,我得到“.U?”转换为不正确的字节数组
答案 0 :(得分:1)
如果你能承受33%的存储开销,最简单的解决方案似乎是Base64编码:
byte[] bytes = {0x2e, 0x55, 0x8d};
string str = Convert.ToBase64String(bytes);
byte[] bytes2 = Convert.FromBase64String(str);
答案 1 :(得分:0)
不知道是否可以按照您的意愿制作它。 String是unicode字符的表示。 Unicode 0x8d
为REVERSE LINE FEED
,因此在字符串中以?
表示。其他控制字符(如0x01,0x02,...)
如果您必须像字符串一样发送它,您可以尝试使用逗号分隔的字符列表(1,2,141,255
),这可能是您问题的最佳解决方案。