java中byte轉int需要 0xff

2021-08-29 23:29:27 字數 412 閱讀 7406

工作的時候遇到了byte和int互轉的情況,發現都會&0xff,查閱了一些資料,總結記錄一下

1.byte轉int:

8位byte擴充套件到32位int會在高位的24位按符號位擴充套件,而加了&0xff(1111 1111)就是把高位的24位變成0來確保是按補零擴充套件。

如果是正數按符號位擴充套件和補零擴充套件是一樣的結果。

如果是負數按符號位擴充套件就是補24個1,保證十進位制的數值一致。按補零擴充套件就是加24個0,為了保證二進位制儲存的一致性,但是十進位制數值已經發生了變化。

總結:如果只是為了處理流,而完全不關心byte陣列十進位制的數值的話,轉換時就加上&0xff。

2.int轉byte:

就我個人理解來說,加不加&0xff都是一樣的,因為byte只有8位,只會接收int的低8位

(個人理解,如有不對,歡迎指導)

java中string與int型別互相轉換

1如何將字串 string 轉換成整數 int?a.有兩個方法 1 int i integer.parseint string 或 i integer.parseint string int radix 2 int i integer.valueof my str intvalue 注 字串轉成 d...

int 轉byte 的相關方法和應用場景

在c 中把int轉成byte一般都會使用bitconverter.getbytes可以獲取得到,但bitconverter有個問題就是每次呼叫都會產生乙個新byte 如果你比較執著的話以下提供兩種方式可以省下這一些。從bitconverter中把 偷取出來,加功一下 先看下bitconverter....

python3 中 byte 和string轉換

python3 中 byte 和string轉換 舉例,我要將byte轉換為string型別 一開始我是直接使用 a str b 但是發現結果並非我想要的那種,後來在網上發現了一篇寫的很好的文章 python 3中最重要的新特性可能就是將文字 text 和二進位制資料做了更清晰的區分。文字總是用un...