代码之家  ›  专栏  ›  技术社区  ›  jjnguy Julien Chastang

如何在Java中将int转换为三字节?

  •  2
  • jjnguy Julien Chastang  · 技术社区  · 16 年前

    我正在尝试转换 int 进入三 bytes 代表那个 int (大字节)。

    我敢肯定这和聪明点和移动点有关。但我不知道该怎么做。

    例如:

    int myInt;
    
    // some code
    
    byte b1, b2 , b3; // b1 is most significant, then b2 then b3.
    

    *注意,我知道int是4个字节,三个字节有可能溢出/溢出。

    4 回复  |  直到 14 年前
        1
  •  14
  •   Paige Ruten    16 年前

    要获得最低有效字节:

    b3 = myInt & 0xFF;
    

    第二个最低有效字节:

    b2 = (myInt >> 8) & 0xFF;
    

    第三个最低有效字节:

    b1 = (myInt >> 16) & 0xFF;
    

    说明:

    用0xff(二进制11111111)对一个值进行位与运算,将返回该数字中最低有效的8位(位0到7)。将数字右移8次,将8到15位置于0到7位的位置,因此用0xff进行AND运算将返回第二个字节。同样地,将数字右移16次,将16到23位置0到7位,因此用0xff执行和返回第3个字节。

        2
  •  4
  •   mattlant    16 年前
    byte b1 = (myint >> 16) & 0xff;
    byte b2 = (myint >> 8) & 0xff;
    byte b3 = myint & 0xff;
    

    虽然我不确定Java中的HOLDFS是怎样的,但我不是Java开发者。

        3
  •  2
  •   Paul Tomblin    16 年前

    int不适合3个字节。但是,假设您知道这些特定的情况:

       byte b1 = (myInt & 0xff);
       myInt >>= 8;
       byte b2 = (myInt & 0xff);
       myInt >>= 8;
       byte b3 = (myInt & 0xff);
    
        4
  •  1
  •   akjain    14 年前

    在爪哇

    int myInt = 1;
    byte b1,b2,b3;
    b3 = (byte)(myInt & 0xFF);
    b2 = (byte)((myInt >> 8) & 0xFF);
    b1 = (byte)((myInt >> 16) & 0xFF);
    System.out.println(b1+" "+b2+" "+b3);
    

    输出 0 0 0