返回信息流代码如下,首先声明一个byte[],然后将其转化为String,然后再将其转化为Byte[],后面是显示数组和字符串内容,
问题是最后的数组不是之前的数组了,我也试了getBytes("ASCII")中的参数换成其他编码方式,但是始终不能得到最初的数组,不知道问题何在,向各位高手请教了。
byte[] keyArray1=new byte[]{(byte) 0xDC,(byte) 0xC1,(byte) 0xBF,(byte)0xBF};
String asdfasdf=new String(keyArray1);
byte c[]=asdfasdf.getBytes("ASCII");
for(int i=0;i<c.length;i++)
{
System.out.print(c[i]);
System.out.print(" ");
}
System.out.println(asdfasdf);
输出为 63 63
选择不同的编码参数数组的长度也有不同,但是始终不能得到最初的数组
这是一条镜像帖。来源:北邮人论坛 / java / #20585同步于 2011/10/27
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
[求教]关于BYTE[] String的转换问题
king468546
2011/10/27镜像同步2 回复
订阅后,新回复会通过你的通知中心匿名送达。
2 条回复
byte c[]=asdfasdf.getBytes("ASCII");
改成GBK
【 在 king468546 (红丸) 的大作中提到: 】
: 代码如下,首先声明一个byte[],然后将其转化为String,然后再将其转化为Byte[],后面是显示数组和字符串内容,
: 问题是最后的数组不是之前的数组了,我也试了getBytes("ASCII")中的参数换成其他编码方式,但是始终不能得到最初的数组,不知道问题何在,向各位高手请教了。
: byte[] keyArray1=new byte[]{(byte) 0xDC,(byte) 0xC1,(byte) 0xBF,(byte)0xBF};
: ...................
编码的问题。
lz程序存在以下问题:
1、byte[]->String 过程中没有指定编码方式,而String->byte[]过程却指定了编码方式,这样会导致转换前后字节数组不一样的概率更大
2、即使byte[]->String及String->byte[]过程中都指定了相同的编码方式,当字节数组中的字节不满足所指定的编码方式的编码规则时,也可能出现前后字节数组不一致。所以出现前后字节数组不一致的情况有时候也是正常的
【 在 king468546 的大作中提到: 】
: 代码如下,首先声明一个byte[],然后将其转化为String,然后再将其转化为Byte[],后面是显示数组和字符串内容,
: 问题是最后的数组不是之前的数组了,我也试了getBytes("ASCII")中的参数换成其他编码方式,但是始终不能得到最初的数组,不知道问题何在,向各位高手请教了。
:
: ...................