비트 문자열의 결과를 16 진수 문자열로 변환하려고하지만 아무것도 인쇄하지 않습니다. 즉, 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 문자를 가져 와서 length 입력이 모두있는 binary [] 배열의 입력과 비교하려고합니다 4
. 그래서 기본적으로 1
길이 요소와 4
결코 사실이 아닐 길이 요소 를 비교하려고 합니다.
따라서 HexString은 절대 변경되지 않고 초기화 한 것과 동일하게 인쇄되므로 코드를 실행하는 동안 아무것도 얻지 못합니다.
4
길이 가있는 bitString의 하위 문자열을 가지고 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);
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다