黑马程序员技术交流社区
标题:
getBytes()输出的是什么呢?
[打印本页]
作者:
Cola
时间:
2013-11-26 20:42
标题:
getBytes()输出的是什么呢?
本帖最后由 Cola 于 2013-11-27 07:17 编辑
getBytes()输出的是什么呢?为什么输出的是49 50 51呢?
String s2="123";
byte[] by1=s2.getBytes();
for(int x=0;x<by1.length;x++)
{
sop(by1[x]);
}
复制代码
作者:
RuntimeError!
时间:
2013-11-26 20:54
因为String存储的是字符串,里面的123是字符的123,是按照ascii码存储的,getBytes得到的是字节码,是ascii 0~9在ascii里面是0x30到0x39 换算到10进制就是48~57.所以1,2,3对应的是49,50,51。
作者:
HAnG
时间:
2013-11-26 20:57
遇到这种情况要查阅下API文档。
public byte[] getBytes() 的描述是:
使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。
说明这个方法返回的是一个byte数组,数组每个元素就是每个字符对应ASCII编码表位置,1对应49,所以123输出49,50,51
作者:
还不到时候
时间:
2013-11-26 21:00
这里运用了编码的知识点
<p> </p><p>String s2="123";
byte[] by1=s2.getBytes();//这是编码的过程,数组by1中存放是1,2,3这三个字节的二进制数,输出的时候就转换成十进制了。</p><p>提醒:byte[]中存放的元素是byte字节,由8个bit位组成的二进制数</p><p>//char[] ch = s2.toCharArray();数组ch中存放的才是1,2,3这三个字符
for(int x=0;x<by1.length;x++)
{
</p><p> sop(by1[x]);
</p><p>}</p><p>String s2="123";
byte[] by1=s2.getBytes();//这是编码的过程,
for(int x=0;x<by1.length;x++)
{
</p><p> sop((char)by1[x]);//这是解码的过程,将byte数组每个元素按照ANSI码表进行解码
</p><p>}</p>
复制代码
作者:
freehiker
时间:
2013-11-26 21:05
本帖最后由 freehiker 于 2013-11-26 21:15 编辑
getBytes()返回的是byte[],若吧byte[]遍历出来,
byte[] bytes = "abc".getBytes();
for(byte b : bytes){
System.out.println(b);
}
//结果97 98 99
结果是ascii编码对应的值
作者:
张天昊76
时间:
2013-11-26 22:34
首先要说一下getBytes();方法的作用,它使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。也就是你的前两行代码。
String s2="123";
byte[] by1=s2.getBytes();
复制代码
这时的数组中就存了转换为字符为1,2,3的数组。实际上里面存的byte数据49,50,51.你在通过下面的遍历数组,打印出来就是49,50,51了。
for(int x=0;x<by1.length;x++)
{
sop(by1[x]);
}
如果还不清楚,给你看下面代码的执行结果你就明白了。
System.out.println((char)49);
System.out.println((char)50); System.out.println((char)51);
复制代码
结果输出1,2,3
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2