導航:首頁 > 編程語言 > javabyte0xff

javabyte0xff

發布時間:2023-02-24 19:01:17

java中如何將字元串"0xff"轉為byte型即把"0xff"轉為-1

java中將字元串"0xff「轉為byte型,使用強制轉換,如下代碼:

packagecom.qiu.lin.he;


publicclassCeShi{

publicstaticvoidmain(String[]args){

byteb=(byte)Integer.parseInt("0xff".substring(2),16);
System.out.println(b);//輸出-1
}
}

輸出結果為:

Ⅱ java中的byte有什麼作用

在今天,byte位元組就是一個八位元組,使用其它位數的機器都進了博物館。 java也提供了一個byte數據類型,並且是基本類型。java byte是做為最小的數字來處理的,因此它的值域被定義為-128~127,也就是signed byte。不幸的是,byte的用作計數的時間遠少於用表達基本內存單元的時間。比如從stream里讀入一個雙位元組字元,我們先收到2個byte。為了把byte轉換成適當的形式,需要對byte值做一些比較,比如判斷字元集要比較其是否在某個編碼范圍內,比如GBK 0x8140~0xFEFE,然後new適當的string。 signed byte 把 0x00 ~ 0xff 映射成 0~127 -128~-1 兩段,注意當與literal比較時,java自動將literal識別成int 可以用 下面的小程序來驗證: 1 public class JavaByte 2 { 3 public static void main(String[] args) 4 { 5 byte b = 0; 6 for ( int i = 0; i <= 0xff; ++i ) 7 { 8 b = (byte)i; 9 System.out.print(" "+i+":"+b+", "); 10 } 11 } 12 } 當收到(0xC7B0)這個GBK字元時,要判斷 0x81 <= 0xC7 <= 0xFE 是否成立,實際變成判斷 -127 < -57 < -2,唔,萬幸,可以直接比較 low < ch < high。如果要判斷 0x00 <= 0xC7 <= 0x80 (ASC Char),這回麻煩了,變成判斷 (0 <= -57 <= 127) || ( 0x57 == -128 )。比較簡單的辦法用 (b+256)%256的辦法令其值回到0~255,或者用&0xff並賦給一個int。考慮到jvm里的byte其實也是32位的,所以在計劃用byte的地方,直接用integer並不會有什麼實際的損失,而 DataInputStream也提供了一個readUnsignedByte()方法返回的是int。所以真正的解決方案是忘掉byte,直接上 int。至於為什麼java沒有unsigned數據類型,照下面這個interview里Jams Golsing的意思,應該是java應該簡單而unsigned算術過於復雜了會讓大多數程序員產生誤解誤用:

Ⅲ Java:轉16進制時常見的【byte[i] & 0xFF】是什麼意思呢

int v ; 這里不論你賦值給v什麼值,v都會是四個位元組的整數
所以,調用Integer.toHexString(v); 出來的還是32位的字元串

b[i] & 0xFF只是保證了v的前三個位元組是0,只有最後一個位元組有數

Ⅳ java中關於&運算符 和 0xFF 的問題

260的2進制為100000100 由於0xFF是位元組操作 高位的1已經超界,所以260在強轉成byte後高位的1會丟失。 也就是
00000100
&
11111111
=
00000100 轉換成2進制就是等於4

4跟什麼運算能等於260?

因為260已經大於127,也就是大於1個位元組所以這里在反推回去的時候不能在進行8位的位元組操作了 就必須用16位的字操作了
260的2進制是
100000100
4的2進制是
00000100
結果很明顯 只需與
100000000 按位取或運算就能得到260

也就是 4 | 0x0100

Ⅳ Java:關於byte轉16進制的& 0xFF,我的理解正確嗎

/**
*Convertbyte[]tohexstring.這里我們可以將byte轉換成int,然後利用Integer.toHexString(int)
*來轉換成16進制字元串。
*@paramsrcbyte[]data
*@returnhexstring
*/
(byte[]src){
StringBuilderstringBuilder=newStringBuilder("");
if(src==null||src.length<=0){
returnnull;
}
for(inti=0;i<src.length;i++){
intv=src[i]&0xFF;
Stringhv=Integer.toHexString(v);
if(hv.length()<2){
stringBuilder.append(0);
}
stringBuilder.append(hv);
}
returnstringBuilder.toString();
}

Ⅵ java中的byte有什麼作用

在今天,byte位元組就是一個八位元組,使用其它位數的機器都進了博物館。 java也提供了一個byte數據類型,並且是基本類型。java byte是做為最小的數字來處理的,因此它的值域被定義為-128~127,也就是signed byte。不幸的是,byte的用作計數的時間遠少於用表達基本內存單元的時間。比如從stream里讀入一個雙位元組字元,我們先收到2個byte。為了把byte轉換成適當的形式,需要對byte值做一些比較,比如判斷字元集要比較其是否在某個編碼范圍內,比如GBK 0x8140~0xFEFE,然後new適當的string。 signed byte 把 0x00 ~ 0xff 映射成 0~127 -128~-1 兩段,注意當與literal比較時,java自動將literal識別成int 可以用 下面的小程序來驗證: 1 public class JavaByte 2 { 3 public static void main(String[] args) 4 { 5 byte b = 0; 6 for ( int i = 0; i <= 0xff; ++i ) 7 { 8 b = (byte)i; 9 System.out.print(" "+i+":"+b+", "); 10 } 11 } 12 } 當收到(0xC7B0)這個GBK字元時,要判斷 0x81 <= 0xC7 <= 0xFE 是否成立,實際變成判斷 -127 < -57 < -2,唔,萬幸,可以直接比較 low < ch < high。如果要判斷 0x00 <= 0xC7 <= 0x80 (ASC Char),這回麻煩了,變成判斷 (0 <= -57 <= 127) || ( 0x57 == -128 )。比較簡單的辦法用 (b+256)%256的辦法令其值回到0~255,或者用&0xff並賦給一個int。考慮到jvm里的byte其實也是32位的,所以在計劃用byte的地方,直接用integer並不會有什麼實際的損失,而 DataInputStream也提供了一個readUnsignedByte()方法返回的是int。所以真正的解決方案是忘掉byte,直接上 int。至於為什麼java沒有unsigned數據類型,照下面這個interview里Jams Golsing的意思,應該是java應該簡單而unsigned算術過於復雜了會讓大多數程序員產生誤解誤用:

Ⅶ java中如何將字元串"0xff"轉為byte型即把"0xff"轉為-1

Stringstr="ff";
Integerin=Integer.valueOf(str,16);

Integer.valueOf就是干這事的,第二個參數就是告訴它是多少進制

Ⅷ java byte轉換成字元串

1、將byte數組轉換成字元
byte[] b={(byte)0xB8,(byte)0xDF,(byte)0xCB,(byte)0xD9};
String str= new String (b);

2、將字元轉換成byte數組
String str = "XXXX";
byte[] sb = str.getBytes();

Ⅸ java 位元組 & 0xFF 什麼意思, <=0xF又是什麼意思

問題1:16進制字元串的作用主要是便於查看,每個位元組必然是兩位字元。 如果不轉換的話,字付中很多都是不可見字元,可能導致顯示錯亂,甚至被系統錯誤的解碼。
問題2: 網上的寫法是2進制的。 這樣可以一眼看出對應的位的變化。而你的2010是10進制的。你需要手工轉成2進制才能很好的確認值。
問題3:0xff換成2進制就是8個1,這樣與的話,其實就是取到了字元的低8位。 oxf就是15, 小於15的數會轉換成一個16進制數,你的代碼里希望是固定的兩個16進制數,所以當只會產生一個時要加個0

閱讀全文

與javabyte0xff相關的資料

熱點內容
高通at指令源碼 瀏覽:516
疫就是命令 瀏覽:47
php讀取根目錄 瀏覽:52
杜魯門pdf 瀏覽:15
窪池指標公式源碼 瀏覽:900
編譯程序添加內核 瀏覽:637
如何讓吃雞蘋果號登錄安卓號 瀏覽:72
伺服器名稱怎麼查詢 瀏覽:432
直播要怎麼推廣app 瀏覽:76
安卓10id如何計算 瀏覽:601
求3的倍數python 瀏覽:675
江蘇好伺服器優質推薦雲空間 瀏覽:139
用php做一個留言板 瀏覽:226
app灰色頁面怎麼回事 瀏覽:57
最長連續遞減子序列python 瀏覽:154
電腦編譯系統有哪些 瀏覽:914
新建的文件夾另一部手機讀不出來 瀏覽:989
怎麼把安卓app傳到新iphone 瀏覽:37
安卓伺服器如何關閉 瀏覽:581
linux登陸不了 瀏覽:553