Java 八进制转换为十六进制错误
我一直在尝试编写一个程序,将八进制转换为二进制,然后再转换为十六进制,但问题是我得到了错误的答案。实际转换的代码如下所示:Java 八进制转换为十六进制错误,java,string,binary,hex,octal,Java,String,Binary,Hex,Octal,我一直在尝试编写一个程序,将八进制转换为二进制,然后再转换为十六进制,但问题是我得到了错误的答案。实际转换的代码如下所示: user_input=user_input.replace("0", "00"); user_input=user_input.replace("1", "01"); user_input=user_input.replace("2", "10"); user_input=user_input.replace("3", "11");
user_input=user_input.replace("0", "00");
user_input=user_input.replace("1", "01");
user_input=user_input.replace("2", "10");
user_input=user_input.replace("3", "11");
user_input=user_input.replace("4", "100");
user_input=user_input.replace("5", "101");
user_input=user_input.replace("6", "110");
user_input=user_input.replace("7", "111");
if (!(user_input.length()-1 % 4 ==0)){
user_input = "00" + user_input; }
user_input=user_input.replace("0000", "0");
user_input=user_input.replace("0001", "1");
user_input=user_input.replace("0010", "2");
user_input=user_input.replace("0011", "3");
user_input=user_input.replace("0100", "4");
user_input=user_input.replace("0101", "5");
user_input=user_input.replace("0110", "6");
user_input=user_input.replace("0111", "7");
user_input=user_input.replace("1000", "8");
user_input=user_input.replace("1001", "9");
user_input=user_input.replace("1010", "A");
user_input=user_input.replace("1011", "B");
user_input=user_input.replace("1100", "C");
user_input=user_input.replace("1101", "D");
user_input=user_input.replace("1110", "E");
user_input=user_input.replace("1111", "F");
我的密钥使用数字1057,它应该转换为22F,但我得到的输出是12F
你知道我做错什么了吗?< /P> < P>你可以考虑这个而不是< /P>
int user_input_dec = Integer.parseInt(user_input,8);
String hex = Integer.toHexString(user_input_dec);
我看到两个问题:
10
更改为二进制0100
,这是不正确的(您已将8变为4)0000
或0001
的结果可能会在后续调用中被解析。例如,如果您有00000010
,它将首先将其更改为00010
,然后10
,并在将其解析为2
时停止虽然可以修补这些代码,@asantabala是对的,
Integer.toHexString(Integer.parseInt(user_input,8))
的操作与您试图让代码执行的操作相同。为什么不打印中间结果并与预期结果进行比较呢?您有时会将八进制输入转换为2位二进制字符串,有时会转换为3位二进制字符串。我想这可能有关系。第二部分也可能有“不想要的”替换。