想了一晚上没想出来,求老师解答/(ㄒoㄒ)/~~

来源:1-1 文件的编码

萨瓦猎姿

2017-06-16 23:04

http://img.mukewang.com/5943f3500001ed5d13660736.jpg请问大家,“慕课”两个中文字符的每个字节为什么有32位?不是每个字节8位吗?

写回答 关注

7回答

  • 空空空空空空啊
    2018-09-12 23:25:51

    因为你转换的结果是二进制,你现在可能已经知道了。

    1:byte是8字节

    2:int是32字节

    3:toBinaryString()是将内容转换成2进制

    由于2个字节组成一个汉字,而你又是2进制的,所以最终结果就是:

    11111111111111111111111111000100   11111111111111111111111110111101

      

                      

             


  • 丑丶小亚
    2018-02-06 15:07:53

    不用 太计较输出的内容,GBK中一个汉字就是一个字节(8bit),

    Integer.toBinaryString(int);函数是将一个integer类型整数,转换为无符号2进制数。

    列子中: 转成字节为:-60 -67

    转成java最终能显示出来的位数32高位为0补1(双字节);

    结果为:11111111111111111111111111000100(其中11000100代表-60)    有符号的二进制取补码的反码     60

  • qq_安居旧巷猫患者_0
    2017-10-21 08:56:51

    我认为是因为每个字节占八位  这里是16进制的  也就是八位十六进制的数   每个十六进制的数转换为二进制是四位

    所以转换为二进制就是32位了    

  • 鲁国人
    2017-07-23 21:58:35

    看一下你的这个java文件是什么编码。如果是utf-8的话。汉子占3个字节就是32位

  • sadfiy
    2017-07-11 16:40:22

    慕课这两个字转换为字节后是负的,负的byte自动转换为int是会按符号位扩展,正数的话是0没什么影响,负数是1,你再按老师说的加个&0xff就会将前面的置0了,就成8位的了。前面那节二进制我现在都很懵逼。

  • 萝卜_
    2017-06-18 00:28:52

      你的输出函数里面不一样  System.out.println(Integer.toHexString(b)); 

    在Java中,如果想要把一个十进制整数转换为十六进制,可以使用Integer.toHexString(int i)方法

  • 慕婉清0689395
    2017-06-17 20:03:57

    关键是汉字根本就是不字节啊。。。

文件传输基础——Java IO流

为您介绍IO流的使用,以及对象的序列化和反序列化的内容

133789 学习 · 1030 问题

查看课程

相似问题