关于C# byte[]转string,byte[]中有0,数据被截断的问题
答案:2 悬赏:50 手机版
解决时间 2021-11-23 14:02
- 提问者网友:送舟行
- 2021-11-22 17:33
关于C# byte[]转string,byte[]中有0,数据被截断的问题
最佳答案
- 五星知识达人网友:夜余生
- 2021-11-22 18:06
现在正常了吗?追问并没有……感觉是 C# API的问题…… java的这个操作是没问题的,但是C#会在 转换 byte 0的时候截断,自己有两台电脑都试了,而且byte数组也给其他朋友帮忙试了,还没找到解决方案追答你怎么可以随便说是C#的问题呢?还有,给出完整测试代码我给你调试。
全部回答
- 1楼网友:独行浪子会拥风
- 2021-11-22 19:08
不知道字节数组test是用什么编码转换而来的。以下代码分别用UTF8、UTF7、Unicode编码,将test转换成字符串
1)UTF8
8,1,18,2,115,97,24,1,34,1,
48,40,0,48,1,56,99,64,100,
72,55,80,99,88,1,96,99,104,1};
string s = System.Text.Encoding.UTF8.GetString(test);
转换结果为:sa"0(08c@dH7PcX`ch
其中包含了三个转意符:
退格键
" 分号
NUL
2)UTF7
string s = System.Text.Encoding.UTF7.GetString(test);转换结果为:sa"0(08c@dH7PcX`ch
其中包含了三个转意符:
退格键
" 分号
NUL
3)Unicode
string s = System.Text.Encoding.UTF7.GetString(test);转换结果是乱码(如下图)
----------
结论:用C#进行转换后,无论采用什么编码,都会将字节数组test所有的元素转换成字符串,不会发生“截断”现象。正如上面UTF8、UTF7的转换结果,转换结果字符串中会带有转意符,不会发生所谓的截断!
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯