0

我有一个在正文中有随机 1 和 0 的网页,我想将其视为原始二进制数据并将其保存到文件中。

<html>
    <head>...</head>
        <pre style="word-wrap: break-word; white-space: pre-wrap;">1 0 1 0 1 1 1 1 1 0</pre>
    </body>
</html>

或者,我可以在一列中获取文件。如果我只是 url.openStream() 并读取字节,它会吐出 ascii 值(49 和 48)。我也不确定如何一次将一位写入文件。我该怎么做呢?

4

2 回答 2

1

<pre style="word-wrap: break-word; white-space: pre-wrap;">1 0 1 0 1 1 1 1 1 0</pre>

这可以作为两个(base64)或三个(十六进制)字节发送,所以我假设效率在这里不是问题。;) 提取字符串后,您可以使用它进行转换。

String s = "1 0 1 0 1 1 1 1 1 0";
long l = Long.parseLong(s.replaceAll(" ", ""), 2);
于 2012-12-03T16:05:53.403 回答
0

您可以将位读入字节,然后将字节写入文件:

int byteIndex = 0;
int currentByte = 0;
while (hasBits) {
    String bit = readBit();
    currentByte = currentByte << 1 | Integer.valueOf(bit);
    if (++byteIndex == 8) {
        writeByte(currentByte);
        currentByte = 0;
        byteIndex = 0;
    }
}

// write the rest of bits here

我也同意罗伯特鲁哈尼的观点,这是一种非常低效的数据传输方式。

于 2012-12-03T15:41:14.257 回答