javabyte無符號
㈠ java中byte與char的問題。
byte是位元組數據類型,是有符號型的,佔1個位元組;大小范圍為-128—127。
char是字元數據類型,是無符號型的,佔2位元組(Unicode碼);大小范圍是0—65535;char是一個16位二進制的Unicode字元,JAVA用char來表示一個字元。
區別:
1、Char是無符號型的,可以表示一個整數,不能表示負數;而byte是有符號型的,可以表示-128—127的數;
2、char可以表中文字元,byte不可以;
3、char、byte、int對於英文字元,可以相互轉化
對於你上面說的最後會出異常是因為你不能通過while對DataInputStream 無限制的讀取,DataInputStream 內容讀取完了之後就沒有數據可讀,固然會報錯。
你應該先判斷DataInputStream 是否可用,只有在可用的情況下能繼續讀取,應該改成:
DataInputStreamdi=newDataInputStream(newByteArrayInputStream(
s.getBytes()));
while(di.available()>0){
System.out.print((char)di.readByte());
}
文章參考:http://blog.csdn.net/luoweifu/article/details/7770588
㈡ java如何將十六進制0xFF5100A5轉換為無符號int值,貌似java不支持無符號數據
你需要使用long來存儲這個值,long在java里是64位整數,java確實不支持無符號數據。
㈢ 您好,我想問下,您在java中怎麼表示的無符號數據
可以將C5這個toByte,具體用法:
String c5 = "C5";
bytes[] bys = c5.getBytes();
使用平台默認的字元集將此 String 解碼為位元組序列,並將結果存儲到一個新的位元組數組中。
㈣ java如何向io流寫入無符號的位元組型數據
OutputStream os = socket.getOutputStream();
os.write(command);
直接用輸出流寫,支持byte[]參數,你用的bw.write(message[i]);參數是int類型的,int佔四個位元組
㈤ Java不提供無符號整數類型謝謝
是的不提供;
--------------------------------------
Java 中的無符號類型是怎麼回事兒?
在 C 和 C++ 這樣的語言中,都提供了不同長度的整數類型:char, short, int, long (實際上,char 並不是真正的整數,但是你可以把它當成整數來用。在實際應用場景中,很多人在 C 語言中用 char 來存儲較小的整數)。在大部分的 32 位操作系統上,這些類型分別對應 1 位元組,2 位元組,4 位元組和 8 位元組。但是需要注意的是,這些整數類型所對應的位元組長度在不同的平台上是不一樣的。相對而言,由於 Java 是針對跨平台來設計的,所以無論運行在什麼平台上,Java 中的 byte 永遠是 1 位元組,short 是 2 位元組,int 是 4 位元組,long 是 8 位元組。
C 語言中的整數類型都提供了對應的「無符號」版本,但是 Java 中就沒有這個特性了。我覺得 Java 不支持無符號類型這個事兒實在是太不爽了,你想想,大量的硬體介面、網路協議以及文件格式都會用到無符號類型!(Java 中提供的 char 類型和 C 中的 char 有所不同,在 Java 中,chat 是用 2 個位元組來表示 Unicode 值,在 C 中,char 是用 1 個位元組來表示 ASCII 值。雖然可以在 Java 中把char 當做無符號短整型來使用,用來表示 0 到 2^16 的整數。但是這樣來用可能產生各種詭異的事情,比如當你要列印這個數值的時候實際上列印出來的是這個數值對應的字元而不是這個數值本身的字元串表示)。
那麼,如何應對 Java 中無符號類型的缺失?
好吧,對於我給出的這種方案,你可能會不喜歡……
答案就是:使用比要用的無符號類型更大的有符號類型。
例如:使用 short 來處理無符號的位元組,使用 long 來處理無符號整數等(甚至可以使用 char 來處理無符號短整型)。確實,這樣看起來很浪費,因為你使用了 2 倍的存儲空間,但是也沒有更好的辦法了。另外,需要提醒的是,對於 long 類型變數的訪問不是原子性操作,所以,如果在多線程場景中,你得自己去處理同步的問題。
地址:http://www.cnblogs.com/yuanyq/p/java_unsigned_types.html
原文地址:http://www.darksleep.com/player/JavaAndUnsignedTypes.html
原文作者:Sean R. Owens
㈥ 為什麼java 中byte不考慮無符號位范圍是0-255
byte類型在java中用1個位元組存儲,有8個比特數,有符號位范圍是-2的(8-1)次方到2的(8-1)次方減1,即-128~127(由於有一個比特數用於存放符號);所以無符號的話,8位比特數全用來表示數值范圍,最低值為00000000(二進制數),即為0;最高值11111111即1+2+4+8+16+32+64+128(2的8次方減1)=255。
㈦ java(byte)>>>時怎麼運算的
0xa2是142, 已經超過了 byte 的存儲空間(-128~+127),會溢出,得到了一個未知的數.
>>>是無符號右移,對於正數相當於除以了4(2^2).
㈧ java如何將一個byte類型轉化為無符號數
什麼叫無符號數????不是很清楚你說的什麼?
你的意思是絕對值么?
byte a=-11;
Math.abs(a);
System.out.println(Math.abs(a));
㈨ 用java語言,得到一個整數,如何用6個位元組的無符號整數的形式寫入文件。
說說方法吧,下面代碼是用java將一個無符號整數用位元組數組表示
public class testCharArray {
public static void main(String[] args) {
int i = 112314;
String str = String.valueOf(i);
char[] charArray = str.toCharArray();
for(int c = 0 ; c < charArray.length ; c ++){
System.out.println(charArray[c]);//112314
}
}
}
至於寫入文件方法很多,這里說一種吧,FileWritter
new FileWriter(file,true);true它會保留現有的內容,並追加新內容在文件的末尾。
㈩ java 無符號byte,即8表示0~255如何實現
可以用byte數組