3 回答

TA貢獻(xiàn)1863條經(jīng)驗 獲得超2個贊
您可以簡單地定義自己的映射,并根據(jù)評論完全跳過十進(jìn)制轉(zhuǎn)換路線。
HashMap<char, String> mapping = new HashMap<char, String>();
mapping.put('0', "0000" );
mapping.put('1', "0001" );
mapping.put('2', "0010");
mapping.put('3', "0011");
mapping.put('4', "0100" );
mapping.put('5', "0101");
mapping.put('6', "0110");
mapping.put('7', "0111");
mapping.put('8', "1000");
mapping.put('9', "1001");
mapping.put('a', "1010");
mapping.put('b', "1011");
mapping.put('c', "1100");
mapping.put('d', "1101");
mapping.put('e', "1110");
mapping.put('f', "1111");
然后可以這樣做:
String hexValue = "something";
StringBuilder result = new StringBuilder();
for (char c : hexValue) {
// need to do some error checking here.
result.append(mapping[Character.toLowerCase(c)]);
}
System.out.prinltn(result.ToString());

TA貢獻(xiàn)2051條經(jīng)驗 獲得超10個贊
雖然我不想在你目前的方法之間打斷,但我會從評論中說,要將十進(jìn)制轉(zhuǎn)換為二進(jìn)制,你所要做的就是一次又一次地獲得數(shù)字的模數(shù),然后將它們結(jié)合起來全部以相反的順序得到你的二進(jìn)制數(shù)。
這將是一個更長的方法,所以我想說你可以從下面的代碼中獲得靈感。
BigInteger.toString(radix)會做你想做的。只需傳入 2 的基數(shù)。在此處閱讀更多相關(guān)信息。
static String hexToBin(String s) {
return new BigInteger(s, 16).toString(2);
}
BigInteger 確保大數(shù)字在轉(zhuǎn)換過程中沒有問題,但您也可以使用下面的這段代碼,這個簡單確實標(biāo)志著您更好地理解了轉(zhuǎn)換。
String hexToBinary(String hex) {
int i = Integer.parseInt(hex, 16);
String bin = Integer.toBinaryString(i);
return bin;
}

TA貢獻(xiàn)1839條經(jīng)驗 獲得超15個贊
舉個例子。
什么是 4B5(十六進(jìn)制)?
“4”在“16×16”的位置,所以表示4×16×16
“B”(11)在“16”的位置,所以這意味著 11 ×16
“5”位于“1”位置,因此表示 5。
答案: 4B5 = 4×16×16 + 11×16 + 5 (=1205) 十進(jìn)制
然后將十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)。
如何將十進(jìn)制轉(zhuǎn)換為二進(jìn)制
轉(zhuǎn)換步驟:
將數(shù)字除以 2。
獲取下一次迭代的整數(shù)商。
獲取二進(jìn)制數(shù)字的余數(shù)。
重復(fù)上述步驟,直到商等于 0。
(1205) in Decimal= (10010110101) in Binary.
嘗試實現(xiàn)這一點(diǎn)。
添加回答
舉報