gpt4 book ai didi

java - Java中如何将8个字符串一次转换为一个字节写入文件?

转载 作者:行者123 更新时间:2023-12-01 18:05:48 24 4
gpt4 key购买 nike

我正在尝试使用字节将二进制数字字符串压缩到文件中。下面是我尝试通过获取长度为 8 的子字符串并尝试将这 8 个字符转换为一个字节来转换该字符串。基本上每个角色都有一点。请告诉我是否有更好的方法来解决这个问题?我不允许使用任何特殊的库。

编码

public static void encode(FileOutputStream C) throws IOException{

String binaryString = "1001010100011000010010101011";
String temp = new String();

for(int i=0; i<binaryString.length(); i++){
temp += binaryString.charAt(i);

// once I get 8 character substring I write this to file
if(temp.length() == 8){
byte value = (byte) Integer.parseInt(temp,2);
C.write(value);
temp = "";
}
// remaining character substring is written to file
else if(i == binaryString.length()-1){
byte value = Byte.parseByte(temp, 2);
C.write(value);
temp = "";
}
}
C.close();
}

解码

Path path = Paths.get(args[0]);
byte[] data = Files.readAllBytes(path);

for (byte bytes : data){
String x = Integer.toString(bytes, 2);
}

这些是我正在编码的子字符串:

10010101
00011000
01001010
1011

不幸的是,当我解码时,我得到以下结果:

-1101011
11000
1001010
1011

最佳答案

我会使用以下内容

public static void encode(FileOutputStream out, String text) throws IOException {
for (int i = 0; i < text.length() - 7; i += 8) {
String byteToParse = text.substring(i, Math.min(text.length(), i + 8));
out.write((byte) Integer.parse(byteToParse, 2));
}
// caller created the out so should be the one to close it.
}

打印文件

Path path = Paths.get(args[0]);
byte[] data = Files.readAllBytes(path);

for (byte b : data) {
System.out.println(Integer.toString(b & 0xFF, 2));
}

关于java - Java中如何将8个字符串一次转换为一个字节写入文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36520084/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com