java中byte, int的轉換

來源:互聯網
上載者:User

標籤:

最近在做些與編解碼相關的事情,又遇到了byte和int的轉換,看著那些關於反碼、補碼的說明依舊頭疼,還是記下些實用的方法吧。
int -> byte
可以直接使用強制類型轉換: byte b = (byte) aInt;
這個操作是直接截取int中最低一個位元組,如果int大於255,則值就會變得面目全非了。
對於通過InputStream.read()擷取的int,可採用這個方法將值還原。

byte -> int
這裡有兩種情況,一種是要求保持值不變,例如進行數值計算,可採用強制類型轉換:int i = (int) aByte;
另一種是要求保持最低位元組中各個位不變,3個高位元組全部用0填充,例如進行編解碼操作,
則需要採用位操作:int i = b & 0xff;

int InputStream.read()
該函數返回一個int類型,範圍從0至255,如果到達流末尾,返回-1。通過ByteArrayInputStream的源碼可以看到是如何從byte轉到int
public synchronized int read() {
    return (pos < count) ? (buf[pos++] & 0xff) : -1;
}

int <-> byte[]
代碼轉自:java int 與 byte轉換 
public static byte[] toByteArray(int iSource, int iArrayLen) {
    byte[] bLocalArr = new byte[iArrayLen];
    for (int i = 0; (i < 4) && (i < iArrayLen); i++) {
        bLocalArr[i] = (byte) (iSource >> 8 * i & 0xFF);
    }
    return bLocalArr;
}

// 將byte數組bRefArr轉為一個整數,位元組數組的低位是整型的低位元組位
public static int toInt(byte[] bRefArr) {
    int iOutcome = 0;
    byte bLoop;

    for (int i = 0; i < bRefArr.length; i++) {
        bLoop = bRefArr[i];
        iOutcome += (bLoop & 0xFF) << (8 * i);
    }
    return iOutcome;
}

轉自: http://freewind886.blog.163.com/blog/static/661924642011810236100/

java中byte, int的轉換

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.