gpt4 book ai didi

java - 如何将从 txt 文件读取的字符 0 和 1 转换为字节?

转载 作者:行者123 更新时间:2023-11-30 10:49:40 26 4
gpt4 key购买 nike

我想读取一个包含 0s 和 1s 的 txt 文件,并将它们转换为字节,但首先要转换为二进制。例如,文本文件包含“00101001”。每个字符都是 1 个字节,从文件读取后我得到 8 个字节。现在我想将它们附加到一个字符串并转换为字节。我应该从 8 个字节中得到 1 个字节,对吗?

有没有更好的选择?到目前为止我做了什么:

public byte[] convertBytes(String File1, int length) throws IOException
{

byte BytesfromFile[]=readInput(File1,length); // readinput() returns (length*8) bytes,contains 48 or 49s.
StringBuilder stringBuilder = new StringBuilder(); //Stringbuilder append chars to build String
byte convertedBytes[]=new byte[BytesfromFile.length/8]; //size of byte array init
int stringToInt;
byte intToByte;

for(int index=0,bitcounter=0,indexCoverted=0;index<BytesfromFile.length;index++,++bitcounter)
{

stringBuilder.append((char) BytesfromFile[index]); //append 48 or 49 casted to char

if(bitcounter==8)
{ String Binary = stringBuilder.toString(); // if 8 bits appended, toString
stringToInt = Integer.parseInt(Binary, 2); // convert Binary String to Int
intToByte = (byte)stringToInt; // cast Int to byte
convertedBytes[indexCoverted++]=intToByte;
bitcounter=0;
stringBuilder.setLength(0); //set length to 0, to append next 8 bit.
}
}
return convertedBytes;
}

最佳答案

您可以使用基数为 2 的 Byte.parseByte 方法:

byte b = Byte.parseByte(str, 2);

您也可以使用 BigInteger(String val,int radix) 构造函数快速对二进制数字的长 String 进行转换:

String input = "1010010010010101010010010101001";
byte[] arr = new BigInteger(input, 2).toByteArray();

// Result:
// [82, 74, -92, -87]

关于java - 如何将从 txt 文件读取的字符 0 和 1 转换为字节?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35336972/

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