【问题标题】:write raw binary to file java将原始二进制文件写入文件java
【发布时间】:2013-01-15 10:55:22
【问题描述】:

假设我有一个二进制字符串(“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();
}

然后我使用

将返回的字符串转换为 ByteArrayInputStream

InputStream is = new ByteArrayInputStream(ascii.toString().getBytes());

【问题讨论】:

  • 而不是感谢信,请显示您作为输入的示例以及您希望作为输出的示例。还显示您尝试过的代码会给人留下积极的印象...
  • 你的方法不应该返回字符串,它应该返回一个字节[]
  • 让它与按位运算符一起工作,谢谢亚历克斯

标签: java binary


【解决方案1】:

您首先将 0 / 1 字符串转换为 byte[]。

然后用

写出来
DataOutputStream.writeByte().

read in with
DataInputStream.readUnsignedByte() // to get 0 - 255

【讨论】:

  • 如何将字符串转换为字节[]?超过 127 的值会导致问题吗?
  • 没有getBytes,你不想有一个字符串到字节[]的转换。你想要一个 0/​​1 字符串到字节表示的转换
  • 而不是 od Stringbuilder 将 Integer.parseInt 行中读取的 int 添加到 int(或字节)数组中。
  • 你使用什么方法将整数转换为 byte[] 并保持二进制表示?
【解决方案2】:

要将字符串转换为二进制,请使用以下命令: 您首先需要将字符串分解成单独的字母,然后一次通过这个字母运行它们。

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);

【讨论】:

  • 我不知道该去哪里
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-09
  • 2020-08-28
  • 1970-01-01
相关资源
最近更新 更多