64 비트 일반 16 진수 텍스트를 2 진수로 변환하려고합니다. 아래 코드에서 plain_Text64
및 binary_Plain_Text64
을 전역 변수로 지정했습니다. 그러나 함수 hexToBin
의 실행 후 binary_Plain_Text64
값은 주어진 64 비트 일반 텍스트의 새로운 2 진 값이어야합니다. 불행히도 나는 다른 것을 얻고있다. hexToBin
함수에 binary_Plain_Text64
의 값을 인쇄했으며 완벽하게 작동합니다. 누구든지 나를 도울 수 있습니까?C에서 이진수로 16 진수로 변환하면 잘못된 출력이 표시됨
#include<stdio.h>
#include<string.h>
int * hexToBin(char plain_Text64[]);
char plain_Text64[17]={};
int binary_Plain_Text64[64]={};
int main(){
int *bin;
printf("Enter 64bit Plain Text\n");
scanf("%s",plain_Text64);
bin=hexToBin(plain_Text64);
int i=0;
for(i=0;i<64;i++){
//printf("%d\n",*(bin+i));
}
printf("%d\n",binary_Plain_Text64[0]);
}
//Hex Value to Binary
int * hexToBin(char plain_Text64[]){
int k;
int hexDigitToBinary[16][4] = {{0,0,0,0}, {0,0,0,1}, {0,0,1,0}, {0,0,1,1}, {0,1,0,0}, {0,1,0,1},
{0,1,1,0}, {0,1,1,1}, {1,0,0,0}, {1,0,0,1}, {1,0,1,0}, {1,0,1,1}, {1,1,0,0}, {1,1,0,1}, {1,1,1,0}, {1,1,1,1}};
char hexDigits[16] = {'0', '1', '2', '3', '4', '5', '6', '7', '8',
'9', 'A', 'B', 'C', 'D', 'E', 'F'};
char hexadecimal[17]={};
int i,j,index=0;
strcat(hexadecimal,plain_Text64);
for(i=0; i<16; i++){
for(j = 0; j < 16; j++){
//printf("%c\t",hexadecimal[i]);
//printf("%c\n",hexDigits[j]);
if(hexadecimal[i] == hexDigits[j]){
//printf("OK\n");
for(k=0;k<4;k++){
binary_Plain_Text64[index++]= hexDigitToBinary[j][k];
}
}
}
}
return binary_Plain_Text64;
}
'plain_Text64 []'에 16 자리의 16 진수를 모두 저장하려면 NUL 문자열 끝에 ==>'plain_Text64 [17]'을 할당해야합니다. 그렇지 않으면 문제가됩니다. 'strcat (16 진수, plain_Text64);'. 'strcat (hexadecimal, plain_Text64);를'strcpy (hexadecimal, plain_Text64);로 대체하십시오 –