假设我有二进制字符串(“0和1s”)并且我想将此字符串写入二进制文件,如何在java中完成?我尝试转换为ASCII值字符串,然后从中创建一个ByteArrayInputStream但超过127的值无法正确显示。谁能帮我这个? 我的binaryToAscii方法:
public static String BinaryToAscii(String bin){
int num_of_bytes = bin.length()/8;
StringBuilder sb = new StringBuilder();
int index = 0;
String byte_code;
Character char_code;
for (int i =0; i<num_of_bytes;i++){
index = i*8;
byte_code = bin.substring(index,index+8);
int charCode = Integer.parseInt(byte_code, 2);
char_code = new Character((char)charCode);
sb.append(char_code);
}
return sb.toString();
}
然后我使用
将返回的字符串转换为ByteArrayInputStreamInputStream is = new ByteArrayInputStream(ascii.toString()。getBytes());
答案 0 :(得分:1)
首先将0/1字符串转换为字节[]。
然后使用
写出来DataOutputStream.writeByte().
read in with
DataInputStream.readUnsignedByte() // to get 0 - 255
答案 1 :(得分:1)
要将字符串转换为二进制,请使用: 您首先需要将字符串分解为单个字母,然后一次运行它们。
char letter = c;
byte[] bytes = letter.getBytes();
StringBuilder binary = new StringBuilder();
for (byte b : bytes)
{
int val = b;
for (int i = 0; i < 8; i++)
{
binary.append((val & 128) == 0 ? 0 : 1);
val <<= 1;
}
binary.append(' ');
}
System.out.println(binary);