问答详情
源自:4-1 字节流之文件输入流FileInputStream-1

单字节读取时Integer.toHexString(b) 批量读取时Integer.toHexString(buf[i]&0xff)

为什么单字节读取不用&0xff   批量读取时却要用呢   不明白  求解

提问者:慕粉3347230 2016-06-02 09:39

个回答

  • leowei
    2016-10-31 23:25:44

    是这样的,

    单字节读取时Integer.toHexString(b)

    read 是无符号读取的,就是读取的时候,假如读取的是一个字节 例如 11111111  b的值就是 00000000 00000000

    00000000 11111111;

    批量读取时Integer.toHexString(buf[i]&0xff) 这个函数的参数是int类型的

    buf 是一个字节数组。 假如buf[1]=11111111, 这个 会提升为 11111111 11111111 11111111 11111111,

    这样两个int的字节码就不同了

    buf[1]&0xff (00000000 00000000 00000000 11111111) 这样就一致了

  • 慕粉3170877
    2016-07-09 15:54:21

    因为每次读取仅仅读取一个字节也就是8位,而单字节就只有8位不需要&0xff,然而批量读取时就需要先读取低八位,再读取高8位

  • 怒放的生命012
    2016-06-30 15:09:47

    Java中一个字节是八位么???

  • qq_丨毒薬_0
    2016-06-02 10:16:44

    单字节说明就只有8位,就直接是低八位了呀!就不需要&0xff了啊