java中int转化为bytes[]

java中int转化为bytes[],第1张

呵呵,我能理解你,你问这个问题的确有点无厘头,有这个必要吗?你想啊,一个int怎么转换为bytes[]呢?如果一定要做也行。byte是8位的二进制,int是32位的二进制,可以将32位拆开,放入byte[]中。这就是原理。具体做法:调用Integer里面的toBinaryString()方法,将你的int转换为二进制,这个二进制是String类型的,在调用String里面的getBytes(),这样就可以将int转换为byte[]了,这题就是在玩二进制,知道就行了。

C++int型变量转换成一个byte
c++是兼容c语言的,因此c语言的编程对c++也适用,
int型的变量变成字节型(Byte),可以使用强制转换,使用方法如下:
int a=120;
a=(char)a;
那么a就会转化成了字节型(Byte型)
值得注意的是,int是双字节型的数,变成单字节的时候,高字节的数会自动省去。

一个byte是8位,一个int是16位,int转换成byte是将前(左)8位舍弃,留后8位。88+68=156,转换成int型2进制为0000000010011100,再强转成byte就是10011100,因为最高位为符号位,也就是表示正负的位,所以这里的1代表负数,剩下的按照原码、补码的规则换算回来就是100,所以是-100

因为在java中,int类型的占4个字节,而byte占1个字节,所以int类型转化为byte类型时会出现位丢失情况,即将int的低8位作为byte类型的值。int型变量的值为257,对应的二进制是100000001,后8位是00000001,第一个0表示符号位,表示正数,所以变量x的值为1。

public static void main(String[] args) {
  // TODO Auto-generated method stub
  int i = 65535;   
  byte[] a = new byte[4];
        a[0] = (byte) (0xff & i);
        a[1] = (byte) ((0xff00 & i) >> 8);
        a[2] = (byte) ((0xff0000 & i) >> 16);
        a[3] = (byte) ((0xff000000 & i) >> 24);
        //a  为转换后的byte
        for (int j = 0; j < alength; j++) {
       Systemoutprintln(a[j]);
  }
 }

同时赞成楼上说的,需要注意


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13374941.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-24
下一篇 2023-07-24

发表评论

登录后才能评论

评论列表(0条)

保存