【问题标题】:How can I convert a binary string to a byte?如何将二进制字符串转换为字节?
【发布时间】:2021-12-20 03:18:08
【问题描述】:

我正在研究霍夫曼压缩。

String binaryString = "01011110";
outFile.write(byte);

我有一个字符串,我想将它转换为一个字节,以便我可以将该字节写入文件。有谁知道我该怎么做?

【问题讨论】:

  • 您拥有的实际起始信息是什么?因为第一行明显不正确,你是有字符串"01011110"还是有字符串"^"
  • 应该是String binaryString = "01011110"; 。抱歉。
  • Byte.parseByte("01011110", 2)

标签: java binary byte bit huffman-code


【解决方案1】:

您可以使用重载的parseByteString 转换为数值,让您指定基数:

String binaryString = "01011110";
byte b = Byte.parseByte(binaryString, 2); //this parses the string as a binary number
outFile.write(b);

parseByte() 的第二个参数让您指定解析字符串的数字系统。默认情况下,使用 10 为基数,因为我们人类通常使用十进制系统。 2 表示该数字应被视为二进制值(以 2 为底)。

【讨论】:

  • 谢谢!第二行的2是什么意思?
  • 它可以让你指定解析字符串的数值系统。默认情况下,使用 10 为基数,因为我们人类通常使用十进制系统。 2 表示该数字应被视为二进制值(以 2 为底)。
  • 啊,好吧!当我的程序进入下一个二进制字符串时,我得到了这个异常NumberFormatException: Value out of range. Value:"10000011" Radix:2。怎么了?
  • 字节只能表示-128到127之间的数字,10000011就是131。
  • 你可以使用byte i = (byte)(Integer.parseInt("10000011", 2) & 0xff)
【解决方案2】:

您可以使用基数为 2 的Byte.parseByte()

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

示例:

System.out.println(Byte.parseByte("01100110", 2));

【讨论】:

    【解决方案3】:

    可以写出(一个字符串[256],每个手动写入 1 和 0 组的 8 位),它只有 256 个。使您能够检查 String.indexOf(binnum[arrayIndex]) 并制作一个相应的新字节[256]数组,并按照与新整数(增量).byteValue()匹配的顺序设置每个数组,它应该使用新字节(字节数组[增量])重新检查字节[]数组的可打印性。 intValue()+"\n"

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-17
      • 2019-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多