4

我有一个关于将字符串类型二进制数转换为位并写入txt文件的问题。

例如,我们有像“0101011”这样的字符串,想要转换为位类型“0101011”,然后写入磁盘上的文件。

我想知道是否有任何隐蔽的字符串到位..

我在网上搜索他们建议使用 bitarray 但我不确定

谢谢

4

3 回答 3

4

尝试这个:

int value = Integer.parseInt("0101011", 2); // parse base 2

然后位模式value将对应于字符串的二进制解释"0101011"。然后,您可以将valuea 写入文件byte(假设字符串不超过 8 个二进制数字)。

编辑您也可以使用Byte.parseByte("0101011", 2);. 但是,Java 中的字节值始终是有符号的。如果您尝试解析设置了第 8 位的 8 位值例如"10010110",即十进制的 150),您会得到 a NumberFormatException,因为 +127 以上的值不适合 a byte。如果您不需要处理大于 的位模式"01111111",则Byte.parseByteInteger.parseInt.

不过,回想一下,要将一个字节写入文件,您使用OutputStream.write(int),它接受一个int(不是byte)值——即使它只写入一个字节。不妨从一个int价值开始。

于 2012-12-04T00:41:21.450 回答
0

您可以尝试以下代码以避免数字溢出。

    long avoidOverflows = Long.parseLong("11000000000000000000000000000000", 2);
    int thisShouldBeANegativeNumber = (int) avoidOverflows;
    System.out.println("Currect value : " + avoidOverflows + " -> " + "Int value : " + thisShouldBeANegativeNumber);

你可以看到输出

Currect value : 3221225472 -> Int value : -1073741824
于 2012-12-04T00:48:10.030 回答
0
//Converting String to Bytes

bytes[] cipherText= new String("0101011").getBytes()

//Converting bytes to Bits and Convert to String

 StringBuilder sb = new StringBuilder(cipherText.length * Byte.SIZE);
      for( int i = 0; i < Byte.SIZE * cipherText .length; i++ )
          sb.append((cipherText [i / Byte.SIZE] << i % Byte.SIZE & 0x80) == 0 ? '0' : '1');

//Byte code of input in Stirn form

      System.out.println("Bytecode="+sb.toString());   // some binary data

 //Convert Byte To characters 

      String bin = sb.toString();
      StringBuilder b = new StringBuilder();
      int len = bin.length();
      int i = 0;
      while (i + 8 <= len) {
        char c = convert(bin.substring(i, i+8));
        i+=8;
        b.append(c);
      }

//String format of Binary data

      System.out.println(b.toString());
于 2016-03-05T12:00:20.897 回答