[英]Why isn't my Bit String to Hex String code printing the result?
我正在嘗試將位字符串的結果打印為十六進制字符串轉換,但不打印任何內容。 換句話說,000110011101應該打印“ 19d”是我的臨時變量嗎?
在此先感謝您的協助,這是我的代碼:
public static void BinaryToHex() {
Scanner scanner = new Scanner(System.in);
String bitString = "";
String hexString = "";
String[] hex = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C",
"D", "E", "F" };
String[] binary = { "0000", "0001", "0010", "0011", "0100", "0101", "0110",
"0111", "1000", "1001", "1010", "1011", "1100", "1101", "1110", "1111" };
System.out.println("Enter a bit string: ");
bitString = scanner.next();
for (int i = 0; i < bitString.length(); i++) {
char temp = bitString.charAt(i);
String temp2 = "" + temp + "";
for (int j = 0; j < binary.length; j++) {
if (temp2.equalsIgnoreCase(binary[j])) {
hexString = hexString + hex[j];
}
}
}
System.out.print("The equivalent hex string is ");
System.out.println(hexString);
}
for (int i = 0; i < bitString.length(); i++) {
char temp = bitString.charAt(i);
String temp2 = "" + temp + "";
for (int j = 0; j < binary.length; j++) {
if (temp2.equalsIgnoreCase(binary[j])) {
hexString = hexString + hex[j];
}
}
}
在此循環中,您嘗試一次獲取一個bitString的一個字符,並將其與所有長度為4
的binary []數組的輸入進行比較。 因此,基本上,您正在嘗試將1
長度元素與4
長度元素進行比較,這永遠都是不正確的。
因此HexString將永遠不會被更改,它的輸出將與初始化時相同,因此在執行代碼時一無所獲。
您可以有一個bitString的子字符串,長度為4
,並將其存儲在temp2中,然后此代碼將起作用,並且每4
位有一個HexCharacter,因此您不能將1位數字轉換為二進制數字。
因此,按照您的邏輯, bitString length
應為4
的倍數,否則它將不會從hex
數組中給出相應的十六進制字符。
以此替換代碼中的for循環。
if(bitString.length()%4!=0)
System.out.println("Please Enter Valid Input.");
else
{
for (int i = 0; i < bitString.length()/4; i++)
{
String temp2 = bitString.substring(4*i,4*(i+1));
for (int j = 0; j < binary.length; j++)
{
if (temp2.equalsIgnoreCase(binary[j]))
{
hexString = hexString + hex[j];
}
}
}
System.out.print("The equivalent hex string is ");
System.out.println(hexString);
}
您的temp2
字符串被重新限定的外for循環,它通過環內的每個時間char
的輸入字符串的第 這意味着temp2
實際上不會包含多個符號(因為它在循環的每次迭代中都會重置),因此永遠不能等於binary
數組中的任何字符串。
您將需要先在循環外部將temp2
字符串定義為String temp2 = ""
,然后在循環內部將temp
附加到它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.