关于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}; 展开
不好意思 刚才 第二张图 传错了
另附 测试 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}; 展开
2个回答
展开全部
不知道字节数组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的转换结果,转换结果字符串中会带有转意符,不会发生所谓的截断!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询