问题描述
- 求助:JAVA生成的汉字每个字节为什么是32位,是不是与操作系统有关,原理是什么
-
32位JDK,中文GBK编码占用2个字节,“张”打印出来是由两个字节组成,为什么每个字节是32位,只用到2个字节的后8位组成,其他高位都是1。如果是英文,就是占用1个字节8位,是没问题的。
解决方案
跟操作系统无关,因为我是64位系统。其实你打印的是 int 类型的, 1个int 4个字节 所以32位。
解决方案二:
要这么说的话,64位JDK岂不是要占用两个64位了……
应该只是打印方法的问题吧,即Java如何解释<0的Byte,类似于C语言里面的(int)ch,按最高bit进行符号扩展。
解决方案三:
还看编码吧
看编码方式:utf-8码的中文都是3字节的,而 gbk/gbk18030 是2字节的。
解决方案四:
byte[i]明明只有8位的,你用 Inter.toBinaryString() 转换后还要用 substring() 截取一下。
解决方案五:
打印方法问题,1个int 4个字节 所以32位,不过楼主真的很细心,我还从未关心过这个。。
时间: 2024-12-22 03:26:10