A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

我的理解是,若用utf-8编码写入一个"中"字,首先是查看utf-8码表,找到对应的10进制整数,然后将这个10进制整数转化为byte字节写入到txt文本当中,当我们用记事本打开时,首先把2进制数据转化为10进制数据,然后记事本会带这个10进制数据去码表中匹配。
请问这个过程是这样的吗?请指正,谢谢。
还有个问题是打开文本时默认是gbk的话,是不是每读18个比特位就解析成10进制数据?

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

6 个回复

倒序浏览
大哥啊不是这样的。为什么要转换成10进制呢,十进制是人最好识别的。电脑最好识别的是2进制。并且一个字节是八位,每个汉字站位都是8的整数倍不会出来18个Bit的。utf-8是用三个直接也就是24个二进制位的0、1组合表示各个文字。GBK是汉字专用用两个字节,也就是16位。2的16次方足以表示所有的汉字,在编码表里,每一种二进制组合对应一个汉字。为什么要转换成10进制呢。转换来转换去多耗cpu啊
回复 使用道具 举报
丁绍然 发表于 2014-6-8 18:43
大哥啊不是这样的。为什么要转换成10进制呢,十进制是人最好识别的。电脑最好识别的是2进制。并且一个字节 ...

是16个bit,我写错了,但编码表里面不是都是10进制的数据对应着一个中文吗?所以我说电脑会有一个把2进制转化为10进制的过程
回复 使用道具 举报
yanghu 发表于 2014-6-8 21:52
是16个bit,我写错了,但编码表里面不是都是10进制的数据对应着一个中文吗?所以我说电脑会有一个把2进制 ...

计算机都是用二进制,你是不是看了有些汉字如:中,-42,-48. 以为这是十进制啊。那是byte型的数据
回复 使用道具 举报
谭荣强 发表于 2014-6-8 22:23
计算机都是用二进制,你是不是看了有些汉字如:中,-42,-48. 以为这是十进制啊。那是byte型的数据 ...

对啊,中文为什么会用 -42 -48来表示?求解
回复 使用道具 举报
yanghu 发表于 2014-6-8 22:30
对啊,中文为什么会用 -42 -48来表示?求解

“中”不是用-42,-48来表示。是我们在查看“中”的时候使用方法获取的。
byte[] bys ="中".getBytes();;
System.out.println(Arrays.toString(bys));//[-42, -48]
我们使用byte,看起来比较顺眼。
你也可以使用字节。只是看着眼花。
for(byte b:bys){
                        System.out.println(Integer.toBinaryString(b));
                }
结果:
11111111111111111111111111010110
11111111111111111111111111010000

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报
yanghu 发表于 2014-6-8 21:52
是16个bit,我写错了,但编码表里面不是都是10进制的数据对应着一个中文吗?所以我说电脑会有一个把2进制 ...

编码表为了方便人看所以才显示成10进制的,实际用的是二进制
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马