簡體   English   中英

java:將整數寫入無符號8位整數的文件

[英]java: writing integers to file as unsigned 8 bit integer

在java中,如何將整數寫入文件,使它們是無符號的8位整數(在0到255范圍內)? 這些數字是int類型並且在0-255之內是否足夠,或者我是否需要先將它們轉換為其他類型? 我認為這是一回事嗎? 但是我不確定當它們被放入文件時是否會發生一些有趣的事情......

有符號與無符號只是解釋位模式的問題,而不是位模式本身。

因此,只要整數在0255范圍內,就可以將它們插入字節並將字節寫入文件。

但是,由於Java將字節位模式解釋為已簽名,因此在重新讀取時必須小心。

例如,假設您有整數253 這是(完全32位形式):

00000000000000000000000011111101

如果你這樣做:

int i = 253;
byte b = (byte) i;

然后b將包含位:

11111101

如果你要求Java使用它,Java會聲稱它是-3因為當將位解釋為signed時, -3表示為模式11111101 因此,如果將該字節寫入文件,則將根據需要寫出位11111101

同樣,當您在讀取文件時將其讀回一個字節時,您讀入的字節將填充位模式11111101 ,Java也將其解釋為-3 所以你不能只做:

byte b = readByteFromFile();
int i = b;

因為Java會將b的內容解釋為-3 ,並將表示-3的整數表示為32位整數,它將是:

11111111111111111111111111111101

相反,你需要屏蔽掉一些東西,以確保你最終得到的整數是:

00000000000000000000000011111101

所以,

byte b = readByteFromFile();
int i = (0x000000FF) & b;

DataOutputStream.writeByte()int寫為1字節值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM