[英]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.