如何在字符串中打印第一个字符的二进制表示

我想检索文件中数据的二进制值。 所以我写了以下代码:

while ((fileData = br.readLine()) != null) { byte b[] = fileData.getBytes("UTF-8"); BigInteger bi = new BigInteger(b); String s = bi.toString(2); System.out.println("Original message in binary: " + s); System.out.println("Original message length: " + s.length()); } 

输出:

 abca (this is the data in a text file) Original message in binary: 1100001011000100110001101100001 Original message length: 31 

一切都很好,但我打印二进制格式的数据,我无法打印第一位( )任何人都可以帮助我吗?

对于第一个角色:

 s.charAt(0); 

编辑:如果要打印第一个字节的二进制表示,请尝试这样:

  String str = Integer.toBinaryString("abca".getBytes("UTF-8")[0]); System.out.println(str); 

编辑2:尝试使用前导零。

 static String addLeadingZeroes(String s) { int zeroes = s.length() % 8; byte[] bzero = new byte[8 - zeroes]; Arrays.fill(bzero, (byte)0x30); return new StringBuilder(new String(bzero)).append(s).toString(); } 

并打电话给

 System.out.println("Original message in binary: "+ addLeadingZeroes(s)); 

我假设你所说的是当第一个二进制数字为“0”时,它不显示。 如果要确保显示完整的32位二进制数字,可以使用以下代码。

 public static final THIRTYTWO_ZEROS = "00000000000000000000000000000000"; String s = bi.toString(2); s = THIRTYTWO_ZEROS.substring(s.length) + s; 

这样可以将前面带有“0”字符的字符串填充为32个字符的长度。