Java 将 00010 打印为 8
Java prints 00010 as 8
我在 Java 中编写的解密程序有这个问题。这是有问题的代码
public static int int_to_int(int input)
{
int[] value_array = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
21, 22, 23, 24, 25, 26};
int[]bin_array= {00000, 00001, 00010, 00011,
00100, 00101, 00110, 00111,
01000, 01001, 01010, 01011, 01100,
01101, 01110, 01111, 10000, 10001,
10010, 10011, 10100, 10101, 10110,
10111, 11000,11001, 11010, 11011};
for(int i=0; i <27; i++)
{
System.out.println("hello");
if(input==value_array[i])
{
System.out.println("returning: " + bin_array[i] + "at: " + i);
return bin_array[i];
}
}
return -1;
}
这是在一行中突出显示的问题
double temp = 00010;
System.out.println("returning: " + temp);
这将输出
returning: 8
但我想看
returning: 00010
想法?
00010
是八进制数,即8。删除所有前导零。
public static int int_to_int(int input)
{
int[] value_array = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
21, 22, 23, 24, 25, 26};
int[]bin_array= {00000, 00001, 00010, 00011,
00100, 00101, 00110, 00111,
01000, 01001, 01010, 01011, 01100,
01101, 01110, 01111, 10000, 10001,
10010, 10011, 10100, 10101, 10110,
10111, 11000,11001, 11010, 11011};
for(int i=0; i <27; i++)
{
System.out.println("hello");
if(input==value_array[i])
{
System.out.println("returning: " + Integer.toOctalString(bin_array[i]) + "at: " + i);
return bin_array[i];
}
}
return -1;
}
我用Integer.toOctalString
以 0 为前缀的整数被视为八进制,而不是二进制。前缀为 0b 或 0B 表示二进制,如 0B00010。要以二进制形式打印,请使用
System.out.println("returning: " + Integer.toBinaryString(temp));
或者,
System.out.println("returning: " + Integer.toString(temp, 2));
也就是说,假设 temp
是一个整数,就像在您的 bin_array
中一样。
我在 Java 中编写的解密程序有这个问题。这是有问题的代码
public static int int_to_int(int input)
{
int[] value_array = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
21, 22, 23, 24, 25, 26};
int[]bin_array= {00000, 00001, 00010, 00011,
00100, 00101, 00110, 00111,
01000, 01001, 01010, 01011, 01100,
01101, 01110, 01111, 10000, 10001,
10010, 10011, 10100, 10101, 10110,
10111, 11000,11001, 11010, 11011};
for(int i=0; i <27; i++)
{
System.out.println("hello");
if(input==value_array[i])
{
System.out.println("returning: " + bin_array[i] + "at: " + i);
return bin_array[i];
}
}
return -1;
}
这是在一行中突出显示的问题
double temp = 00010;
System.out.println("returning: " + temp);
这将输出
returning: 8
但我想看
returning: 00010
想法?
00010
是八进制数,即8。删除所有前导零。
public static int int_to_int(int input)
{
int[] value_array = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
21, 22, 23, 24, 25, 26};
int[]bin_array= {00000, 00001, 00010, 00011,
00100, 00101, 00110, 00111,
01000, 01001, 01010, 01011, 01100,
01101, 01110, 01111, 10000, 10001,
10010, 10011, 10100, 10101, 10110,
10111, 11000,11001, 11010, 11011};
for(int i=0; i <27; i++)
{
System.out.println("hello");
if(input==value_array[i])
{
System.out.println("returning: " + Integer.toOctalString(bin_array[i]) + "at: " + i);
return bin_array[i];
}
}
return -1;
}
我用Integer.toOctalString
以 0 为前缀的整数被视为八进制,而不是二进制。前缀为 0b 或 0B 表示二进制,如 0B00010。要以二进制形式打印,请使用
System.out.println("returning: " + Integer.toBinaryString(temp));
或者,
System.out.println("returning: " + Integer.toString(temp, 2));
也就是说,假设 temp
是一个整数,就像在您的 bin_array
中一样。