【发布时间】:2017-06-03 01:23:23
【问题描述】:
我需要将 ASCII 字符转换为(7 位)二进制。 我见过this,但它给了我8位的二进制值,同时我希望它是7位的。例如:
C 应该是1000011
CC 应该是10000111000011
% 应该是0100101
所以,我将代码更改为:
String s = "%";
byte[] bytes = s.getBytes();
StringBuilder binary = new StringBuilder();
for (int j = 0; j < 7; j++) {
int val = bytes[j];
for (int i = 0; i < 8; i++) {
binary.append((val & 128) == 0 ? 0 : 1);
val <<= 1;
}
binary.append("");
}
System.out.println("'" + s + "' to binary: " + binary);
并且它抱怨:
java.lang.ArrayIndexOutOfBoundsException: 1
在行中:
int val = bytes[j];
突出显示:
我用过
for(int j=0;j<7;j++)
int val = bytes[j];
而不是
for (byte b : bytes)
int val = b;
【问题讨论】:
-
"%".getBytes()正在返回 bytes,而不是 bits。您的bytes数组中将只有 1 个元素(在索引0处)。 -
字节,整数类型是二进制。您不想转换,而是以二进制形式打印它
标签: java