关于C# byte[]转string,byte[]中有0,数据被截断的问题

例如下图的java代码中,byte[]转string输出的是完整的string但是如果是C#,byte数组内到0的位置,就会截断求解C#解析完整byte[]不好意思刚才第... 例如下图的java代码中,byte[]转 string 输出的是完整的string但是如果是C#,byte数组内到0的位置,就会截断求解 C# 解析完整 byte[]
不好意思 刚才 第二张图 传错了
另附 测试 byte[]
byte[] test = new byte[]{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};
展开
 我来答
freeeeeewind
推荐于2017-12-16 · TA获得超过1万个赞
知道大有可为答主
回答量:3227
采纳率:94%
帮助的人:1292万
展开全部

不知道字节数组test是用什么编码转换而来的。以下代码分别用UTF8、UTF7、Unicode编码,将test转换成字符串

1)UTF8

byte[] test = new byte[] {
   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);

转换结果为:\bsa\"0(\008c@dH7PcX`ch

其中包含了三个转意符:

      \b 退格键

      \"  分号

      \0  NUL


2)UTF7

string s = System.Text.Encoding.UTF7.GetString(test);

转换结果为:\bsa\"0(\008c@dH7PcX`ch

其中包含了三个转意符:

      \b 退格键

      \"  分号

      \0  NUL


3)Unicode

string s = System.Text.Encoding.UTF7.GetString(test);

转换结果是乱码(如下图)

----------

结论:用C#进行转换后,无论采用什么编码,都会将字节数组test所有的元素转换成字符串,不会发生“截断”现象。正如上面UTF8、UTF7的转换结果,转换结果字符串中会带有转意符,不会发生所谓的截断!

阳光的雷咩咩
2016-06-24 · TA获得超过1.4万个赞
知道大有可为答主
回答量:2.3万
采纳率:66%
帮助的人:7576万
展开全部
现在正常了吗?
追问
并没有……感觉是 C# API的问题…… java的这个操作是没问题的,但是C#会在 转换 byte 0的时候截断,自己有两台电脑都试了,而且byte数组也给其他朋友帮忙试了,还没找到解决方案
追答
你怎么可以随便说是C#的问题呢?还有,给出完整测试代码我给你调试。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式