⑴ 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