簡體   English   中英

如何在Java中有效地將二進制字符串轉換為二進制字節數組?

[英]How to convert efficiently binary string to binary byte array in Java?

作為輸入,我有二進制字符串String a = "100110" 作為輸出,我需要二進制字節數組byte[] b = {1,0,0,1,1,0} 現在我正在使用

for (int i=0; i<a.length; i++) { b[i]= Byte.parseByte(a.substring(i, i+1)); }

但這種方法太慢了。 任何人都可以給出更好的建議嗎? 謝謝

您可以在不為子串創建對象的情況下執行此操作,如下所示:

for (int i=0; i<a.length; i++) {
    b[i]= a.charAt(i)=='1' ? (byte)1 : (byte)0;
}

你的方法較慢的原因是每次調用substring產生一個新的String對象,一旦parseByte完成,它parseByte資格進行垃圾收集。

假設輸入有效......

    byte[] b = new byte[a.length()];
    for (int i = 0; i < b.length; i++) {
        b[i] = (byte) (a.charAt(i) - '0');
    }

制作一個int[]而不是byte[]但我希望得到優雅點:

    int[] a = "100110"
            // Turn it into a stream.
            .chars()
            // Make '0'/'1' into 0/1
            .map(c -> c - '0')
            // Roll it into an array.
            .toArray();

暫無
暫無

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

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