说,我有一个二进制字符串,比如
11110001000010100000011000000110000001100000010100001000111100
这是62
位,我希望它64
0011110001000010100000011000000110000001100000010100001000111100
我可以将其打印为 64,但如何保存它以便将其添加到数组中?
for(int i = 0; i < Long.numberOfLeadingZeros((long)num); i++) {
System.out.print('0');
}
System.out.println(Long.toBinaryString((long)num));
我还想添加 2D 数组,以便我可以将其显示为 8x8
00111100
01000010
10000001
10000001
10000001
10000001
01000010
00111100
这是我将其添加到数组中的代码,
for(int i = 0; i < bin1.length(); i++){
for(int j = 0; j < 8; j++){
for(int z = 0; z < 8; z++){
table[j][z] = bin1.charAt(i);
}
}
}
但是当我打印它时,它只是打印0
s。
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
你来了:
long num = 4342175383962075708L;
char[][] table = new char[8][8];
String bin1 = Long.toUnsignedString(num, 2);
while(bin1.length()<64){
bin1="0"+bin1;
}
//Store the bits in the array
int i=0;
for(int j = 0; j < 8; j++){
for(int z = 0; z < 8; z++){
table[j][z] = bin1.charAt(i++);
}
}
//Print the numbers
for(char[] m : table){
for(char n : m){
System.out.print(n);
}
System.out.println()
}
使用以下命令将其保存为所需的2D数组:
int j=0,z =0;
for(int i = 0; i < Long.numberOfLeadingZeros((long)num); i++) {
System.out.print('0');
table[j][z++] = '0';
if(z>7){
j++;
z=0;
}
}
String a = Long.toBinaryString((long)num);
for(int g = 0; g < a.length(); g++){
table[j][z++] = a.charAt(g);
System.out.print(a.charAt(g));
if(z>7){
j++;
z=0;
}
}
System.out.print("n");
for(int k = 0; k < 8; k++){
for(int s = 0; s < 8; s++){
System.out.print(table[k][s]);
}
System.out.print("n");
}
}