java大於127byte值轉int

2020-12-11 編程筆記

因為java沒有無符號數,所以在byte值大於127時,java表達的是負數。

例如:

byte b = (byte)152;// b的值在java中表達的是:-104,二進位值是:10011000。

int i = b;// i 的值 在java中表達的是:-104,二進位值是:11111111111111111111111110011000

如果想要 i 的值等於152,需要以下運算:

/**

* byte轉int,對於b值大於127時必須用。

*

* @param b

* @return

*/

protected int byte2Int(byte b) {

return b & 0xFF;

}

i = byte2Int(b);// 現在 i 的值在java中表達的是:152,二進位值是:00000000000000000000000010011000

相關焦點

  • Java 教程|byte 轉換 int 時為何與 0xff 進行與運算
    直接 Integer.toHexString(b[ i ]);,將 byte 強轉為 int 不行嗎?答案是不行的。其原因在於:1. byte的大小為 8bits 而 int 的大小為 32bits ;2. java的二進位採用的是補碼形式 ;在這裡先溫習下計算機基礎理論:byte是一個字節保存的,有8個位,即8個0、1。
  • Java中byte做&0xff運算的原因及解析
    第一種情況:signed/unsigned之間的轉化java中,除了char是unsigned 兩個字節,用來表達UTF-16,此外byte/short/int/long都是signed的。取值範圍:boolean:一字節byte:(-128,127) 一字節char:(0,65535) 兩字節short:(-32768,32767)兩字節那麼在Java與別的語言編寫的程序通信時,就可能涉及到signed/unsigned之間的轉化。
  • 關於java中byte取值範圍最小值為什麼是-128而不是-127引發的思考
    我們都知道java 的byte佔4個字節,1個字節8位。而計算機表示數據都是以二進位的形式表示。那麼一個byte表示的二進位應該為0000 0000 -1111 1111,又因為最高位代表符號位,那麼一個byte表示的範圍就應該為(-2^7-1)-(2^7-1)即-127到127怎麼會有-128呢?
  • Java【IO系列】基礎篇—9. DataInputStream和DataOutputStream
    ); return (byte)(ch); } // 從「數據輸入流」中讀取「無符號的Byte類型」的值,即讀取值為正數的byte值 public final int readUnsignedByte() throws IOException { int ch = in.read();
  • 老杜帶你學Java【第十課】
    類型 字節 --- byte 1 short 2 int 4 long 8 float 4 double 8 boolean 1 char 2 6、記憶byte short int char的取值範圍: byte -128 ~ 127 short
  • 為什麼對byte的操作會得到int的結果
    他們會說:」對一個byte的操作,按理說,結果應該也是一個byte呀,為什麼會是一個int?」 這這個理想世界,變量i的值將會是16。為什麼?
  • 「軟帝學院」Java怎麼學?從零開始學Java!
    ;Java語言基礎(數據類型轉換之隱式轉換)(掌握)· A:案例演示o a:int + into b:byte + int· B:Java中的默認轉換規則o 取值範圍小的數據類型與取值範圍大的數據類型進行運算
  • JAVA零基礎學習總結及筆記
    如圖:3.3.1 整數類型數據類型\內存空間(8位=1位元組)\取值範圍byte\8位(1個字節)\ -128~127short\16位(2個字節)\ -32768~32767int\32位(4個字節)\
  • Java 字節碼指令,讓我發了瘋瘋瘋!
    大部分的指令都不支持 byte、short 和 char,甚至沒有任何指令支持 boolean 類型。編譯器會將 byte 和 short 類型的數據帶符號擴展(Sign-Extend)為 int 類型,將 boolean 和 char  零位擴展(Zero-Extend)為 int 類型。
  • 老杜帶你學Java【第六課】
    1.2、數據類型在java語言中包括兩種: 第一種:基本數據類型 基本數據類型又可以劃分為4大類8小種: 第一類:整數型 byte,short,int,long (沒有小數的) 第二類:浮點型 float,double (帶有小數的) 第三類:布爾型 boolean:只有兩個值true
  • Java基本數據類型
    華清遠見成都中心高端IT就業培訓專家java基本類型共有八種,基本類型可以分為三類,字符類型char,布爾類型boolean以及數值類型byte、short、int、long、float、double。
  • java面試技巧:Integer和int的那些事
    此法將始終緩存-128到127(包括端點)範圍內的值,並可以緩存此範圍之外的其他值緩存設計valueOf 法中 IntegerCache.low = -128; IntegerCache.high = 127 ; 也就是當我們傳的int 值 在-128~127之間這個範圍時, 會返回: return IntegerCache.cache[i + (-IntegerCache.low
  • 為什麼阿里巴巴Java開發手冊強制整型包裝類對象值用equals比較?
    先看 java.lang.Integer#valueOf(int) 源碼:通過源碼可以看出,如果用 Ineger.valueOf(int) 來創建整數對象,參數大於等於整數緩存的最小值( IntegerCache.low )並小於等於整數緩存的最大值( IntegerCache.high), 會直接從緩存數組 (java.lang.Integer.IntegerCache
  • Java基礎知識筆記四(詳細)
    static void main(String[] args) { } public static int getSum(int a,int b){ int result = a + b; return result; }}有些是沒有返回值的格式說明修飾符:目前固定寫法public static返回值類型:用於限定返回值的數據類型方法名
  • 一文詳解 Java 的八大基本類型!
    換句話說,字符的取值範圍為0到65535,每個值映射到特定的字符。如果需要創建該範圍之外的字符,可以將一對字符組合起來。參見「在Java中反轉字符串」(https://therenegadecoder.com/code/reverse-a-string-in-java/)這篇文章中的例子。
  • JDK 源碼閱讀 :ByteBuffer
    ,limit不會大於capacityposition:表示下一個要讀寫的元素位置,position不會大於limitmark:用於暫存一個元素位置,和書籤一樣,用於後續操作所有的Buffer操作都圍繞這些屬性進行。
  • Go 中 string 轉 []byte 的陷阱
    我們知道 slice 內部並不會存儲真實的值,而是對數組片段的引用,其內部結構是:type slice struct { data uintptr len int cap int}其中 data 是指向數組元素的指針,len 是指 slice 要引用數組中的元素數量。
  • java之小小的基礎知識點
    一.如何編寫java程序呢?1.新建一個java工程2.新建一個包名 新建一個java類 包的命民 :域名的反向 www.百度.com com.百度.www3.編寫內容4.在類中的空白處 右擊運行java 選擇run as java application詳情請參考:
  • int和Integer裝箱拆箱遇見的坑
    例子1結果1、Integer b=3;java中將3自動裝箱成Integer類型,也就是說3已經不是基本數據類型了,變成了對象,也就是引用類型。例子2首先需要注意的是f1、f2、f3、f4四個變量都是Integer對象引用,所以下面的==運算比較的不是值而是引用。裝箱的本質是什麼呢?當我們給一個Integer對象賦一個int值的時候,會調用Integer類的靜態方法valueOf
  • 五分鐘的java基礎考點速記(不包含語法)
    •數組的類型是以"["開頭的,例如int數組->[I,另外多維數組和一維數組是兩個類->[I 和 [[I•數組對象的創建是根據jvm指令創建的•newarray:創建數組對象•multinewarray:創建多個數組對象基本數據類型•關於boolean:jvm中會使用0,1兩個int值來表示boolean類型,至於boolean數組則是通過讀寫btye數組來實現的類型大小取值範圍包裝器