簡體   English   中英

將byte轉換為int,反之亦然

[英]Convert byte to int and vice-versa

任何人都知道如何在java中將大量字節,前1000字節轉換為int / long等?

你可以使用循環

byte[] bytes =
int[] ints = new int[bytes.length];
for(int i=0;i<bytes.length;i++)
   ints[i] = bytes[i];

這樣一個1000個元素可能需要10微秒。

要在Java中將byte轉換為int ,您有兩個選擇:

byte val = 0xff;
int a = val;          // a == -1
int b = (val & 0xff); // b == 0xff

Java庫中沒有方法可以將數組從一種基本類型轉換為另一種基本類型,您必須手動完成。

謝謝Paŭlo。 這是更正后的答案:

public class Main {

    public static int[] convert(byte[] in) {
        int bytesPerSample = 4;
        int[] res = new int[in.length / bytesPerSample];

        for (int i = 0; i < res.length; i++) {
            int bOffset = i * bytesPerSample;
            int intVal = 0;
            for (int b = 0; b < bytesPerSample; b++) {
                int v = in[bOffset + b];
                if (b < bytesPerSample - 1) {
                    v &= 0xFF;
                }
                intVal += v << (b * 8);
            }
            res[i] = intVal;
        }

        return res;
    }

    public static byte[] convert(int[] in) {
        int bytesPerSample = 4;
        byte[] res = new byte[bytesPerSample * in.length];

        for (int i = 0; i < in.length; i++) {
            int bOffset = i * bytesPerSample;
            int intVal = in[i];
            for (int b = 0; b < bytesPerSample; b++) {
                res[bOffset + b] = (byte) (intVal & 0xFF);
                intVal >>= 8;
            }
        }

        return res;
    }

    public static void main(String[] args) {
        int[] in = {33, 1035, 8474};
        byte[] b = convert(in);
        int[] in2 = convert(b);
        System.out.println(Arrays.toString(in2));
    }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM