簡體   English   中英

為什么我的Bit String to Hex String代碼無法打印結果?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM