我一直在尝试编写一个程序,它将八进制转换为二进制,然后是十六进制,但问题是我得到了错误的答案。实际转换的代码如下:
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
对我做错了什么的想法?
答案 0 :(得分:0)
你可能会考虑这个
int user_input_dec = Integer.parseInt(user_input,8);
String hex = Integer.toHexString(user_input_dec);
答案 1 :(得分:0)
我看到两个问题:
10
更改为二进制0100
,这是不正确的(您已将8变为4) 0000
或0001
的结果可能会在后续调用中被解析。例如,如果您有00000010
,则首先将其更改为00010
,然后将10
更改为2
并停止,此时应将其解析为Integer.toHexString(Integer.parseInt(user_input, 8))
。虽然可以对它们进行修补,但@asantaballa是正确的,{{1}}与您尝试让代码执行的操作相同。