⑴ JAVA如何用 byte数组存一个int数据
强转一下就行了
inti=10;
byteb[]=newbyte[2];
b[0]=(byte)i;
⑵ 求java编程 字节byte怎么转换成整形int
1.byte的大小为8bits而int的大小为32bits
2.java的二进制采用的是补码形式
在这里先温习下计算机基础理论
byte是一个字节保存的,有8个位,即8个0、1。
8位的第一个位是符号位,
也就是说00000001代表的是数字1
10000000代表的就是-1
所以正数最大位01111111,也就是数字127
负数最大为11111111,也就是数字-128
上面说的是二进制原码,但是在java中采用的是补码的形式,下面介绍下什么是补码
1、反码:
一个数如果是正,则它的反码与原码相同;
一个数如果是负,则符号位为1,其余各位是对原码取反;
2、补码:利用溢出,我们可以将减法变成加法
对于十进制数,从9得到5可用减法:
9-4=5因为4+6=10,我们可以将6作为4的补数
改写为加法:
9+6=15(去掉高位1,也就是减10)得到5.
对于十六进制数,从c到5可用减法:
c-7=5因为7+9=16将9作为7的补数
改写为加法:
c+9=15(去掉高位1,也就是减16)得到5.
在计算机中,如果我们用1个字节表示一个数,一个字节有8位,超过8位就进1,在内存中情况为(100000000),进位1被丢弃。
⑴一个数为正,则它的原码、反码、补码相同
⑵一个数为负,刚符号位为1,其余各位是对原码取反,然后整个数加1
-1的原码为10000001
-1的反码为11111110
+1
-1的补码为11111111
0的原码为00000000
0的反码为11111111(正零和负零的反码相同)
+1
0的补码为100000000(舍掉打头的1,正零和负零的补码相同)
Integer.toHexString的参数是int,如果不进行&0xff,那么当一个byte会转换成int时,由于int是32位,而byte只有8位这时会进行补位,
例如补码11111111的十进制数为-1转换为int时变为好多1啊,呵呵!即0xffffffff但是这个数是不对的,这种补位就会造成误差。
和0xff相与后,高24比特就会被清0了,结果就对了。
----
Java中的一个byte,其范围是-128~127的,而Integer.toHexString的参数本来是int,如果不进行&0xff,那么当一个byte会转换成int时,对于负数,会做位扩展,举例来说,一个byte的-1(即0xff),会被转换成int的-1(即0xffffffff),那么转化出的结果就不是我们想要的了。
而0xff默认是整形,所以,一个byte跟0xff相与会先将那个byte转化成整形运算,这样,结果中的高的24个比特就总会被清0,于是结果总是我们想要的。
来自博客友zhouyong0的分享
⑶ c语言 二进制的byte数组转化为int数组
如果byte里面保存的是数值,那么你可以调整顺序(低位在前,高位在后)之后,通过memcpy直接转换:
memcpy(&intVar, byteArray, sizeof(int));
如果byte保存的是数字的字符,那么你需要进行转换,具体如何转换,要看byte里面保存的是什么格式了。
⑷ java如何将byte类型数组变成int类型的数组
每4个byte转化成一个int,使用位运算,大致如下
大端序:
int[i]=byte[4*i]<<24|byte[4*i+1]<<16|byte[4*i+2]<<8|byte[4*i+3];
小端序:
int[i]=byte[4*i]|byte[4*i+1]<<8|byte[4*i+2]<<16|byte[4*i+3]<<24;
⑸ int 13456转换成byte
只能强行转换。
int占4个字节,byte占1个字节。int转化成byte的时候每次取低八位,用四个byte来存储一个int的值。byte转化成int的时候再按原来逆向移动相同的位数并叠加。
publicstaticbyte[]intToBytes(inti){byte[]result=newbyte[4],result[0]=(byte)((i>>24)&0xFF),result[1]=(byte)((i>>16)&0xFF),result[2]=(byte)((i>>8)&0xFF),result[3]=(byte)(i&0xFF),returnresult。
⑹ java中 int 类型 和 byte 类型
int占4个字节,byte是1个字节,每个字节8位。
所以2进制的话,int最多可以表示正负一共2的32次方个数,byte则是2的8次方。
e.g.
int=21;在计算机中表示为00000000,00000000,00000000,00010101
byte=21;就是00010101
byte转换int直接赋值,int转byte强制类型转换,因为涉及精度。
⑺ java中byte数组为什么和int数组存储的数据一样,他们有什么区别
大小不同的吧,牵扯到存储数的范围,越界之类的,类型转换的时候要注意,亲~
⑻ byte和int类型有什么区别
byte和int类型的区别是:
1、类型不一样,byte是字节数据的类型,int是整型数据的类型。
2、占用的字节不一样,byte占用1 个字节,int占用4个字节。
3、大小范围不一样,byte 的大小范围是-128—127 ,int的大小范围是-2147483648到2147483647。
Byte的中文意思是字节,是计算机用于存储容量的一种计量单位,一般情况下一字节等于有八位, 也表示一些计算机编程语言中的数据类型和语言字符。
拓展资料
数据存储是以字节为单位,数据传输大多是位为单位,一个位就代表一个0或1,每8个位组成一个字节,是最小一级的信息单位。
⑼ java 中Int 与byte的区别
主要是存储空间的大小和取值范围不同。
byte占用1个字节存储空间,取值范围-128~127
int占用4个字节存储空间,取值范围-2的31次方~2的31次方-1