簡體   English   中英

在Java中將二進制字符串轉換為字節數組

[英]Convert binary string to byte-Array in Java

我有一個二進制字符串,我想將它拆分為長度為 8 的塊,然后將相應的字節存儲在字節數組中。 例如,字符串“0000000011111111”應該被轉換為{-128, 127}。 到目前為止,我編寫了以下函數:

public static byte[] splitBinary(String binaryString) throws ConversionException {

    if (binaryString.length()%8 != 0) {
        throw new ConversionException();
    }

    byte[] result = new byte[binaryString.length()/8];

    while (i < result.length) {
        result[i] = (byte) (Integer.parseInt(binaryString.substring(i, i+8), 2)-128);
        i+=8;
    }
    return result;
} 

但這會導致 {-128, 0}。 我怎樣才能實現所需的功能?

你的分裂程序是錯誤的。

將 i 增加 1 只會將您的窗口向右移動一個字符,而不是兩個字符,從而導致讀取字符串 00000000 和 00000001。

我指的是結果的大小,它可能小於binaryString大小,但在binaryString.substring(i, i+8)i+=8 您用作binaryString大小。 因此,將它們更改為binaryString.substring(i*8, i*8+8)i++

我按以下方式更改了該功能,現在它按預期工作(在糾正我的期望之后 ;))。 謝謝你們!

public static byte[] splitBinaryStringToByteArray(String binaryString) throws ConversionException {

    if (binaryString.length()%8 != 0) {
        throw new ConversionException();
    }

    byte[] result = new byte[binaryString.length()/8];

    int i =0;int j=0;
    while (i < binaryString.length()) {
        System.out.println("Substring: " + binaryString.substring(i, i+8));
        result[j] =((byte)Integer.parseInt((binaryString.substring(i, i+8)), 2));
        j++;
        i+=8;
    }
    return result;
}

暫無
暫無

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

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