C编程十六进制到字符
我想做的是让用户输入一个十六进制数字,然后这个数字将被转换成一个字符,并显示在监视器上。这将继续,直到遇到一个C编程十六进制到字符,c,char,hex,C,Char,Hex,我想做的是让用户输入一个十六进制数字,然后这个数字将被转换成一个字符,并显示在监视器上。这将继续,直到遇到一个EOF。我完成了与此相反的代码,将字符转换成十六进制数字。我遇到的问题是如何从我为char2hex程序使用的getchar()用户那里获取十六进制数。十六进制数有类似的函数吗 这是char2hex程序的代码 #include <stdio.h> int main(void) { char myChar; int counter = 0; while
EOF
。我完成了与此相反的代码,将字符转换成十六进制数字。我遇到的问题是如何从我为char2hex
程序使用的getchar()
用户那里获取十六进制数。十六进制数有类似的函数吗
这是char2hex程序的代码
#include <stdio.h>
int main(void) {
char myChar;
int counter = 0;
while (EOF != (myChar = getchar())) {
/* don't convert newline into hex */
if (myChar == '\n')
continue;
printf("%02x ", myChar);
if (counter > 18) {
printf("\n");
counter = -1;
}
counter++;
}
system("pause");
return 0;
}
#包括
内部主(空){
char-myChar;
int计数器=0;
而(EOF!=(myChar=getchar()){
/*不要将换行符转换为十六进制*/
如果(myChar=='\n')
继续;
printf(“%02x”,myChar);
如果(计数器>18){
printf(“\n”);
计数器=-1;
}
计数器++;
}
系统(“暂停”);
返回0;
}
这就是我想让程序做的,除了它会持续做这件事
#include <stdio.h>
int main() {
char myChar;
printf("Enter any hex number: ");
scanf("%x", &myChar);
printf("Equivalent Char is: %c\n", myChar);
system("pause");
return 0;
}
#包括
int main(){
char-myChar;
printf(“输入任何十六进制数:”);
scanf(“%x”、&myChar);
printf(“等效字符为:%c\n”,myChar);
系统(“暂停”);
返回0;
}
任何帮助都将不胜感激
谢谢因为字符和整数可以在C中互换使用,所以您可以使用以下代码:
int main(void) {
int myChar;
printf("Enter any hex number: ");
scanf("%x", &myChar);
printf("Equivalent Char is: %c\n", myChar);
system("pause");
return 0;
}
如果您想让它循环,那么只需将它括在while循环中,如示例代码所示
编辑:您可以在此处试用工作代码\include
#包括
#包括
内部主(空){
int-myChar;
int计数器=0;
char buff[3]={0};
而(EOF!=(myChar=getchar()){
if(isxdigit(myChar)){
buff[counter++]=myChar;
如果(计数器==2){
计数器=0;
myChar=strtol(buff,NULL,16);
putchar(myChar);
}
}
}
printf(“\n”);
系统(“暂停”);
返回0;
}
从技术上讲,这会导致未定义的行为(尽管它可以在通用系统上工作),真的吗?为什么呢我一直被教导你可以使用字符作为int(反之亦然),只要它在255以下,就不需要强制转换。我想一个if语句可以解决这个问题if(myChar<256){do code here;}
scanf
with%x
要求参数char myChar完全无符号int*
代码>-->int-myChar代码>用于EOF
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int main(void) {
int myChar;
int counter = 0;
char buff[3] = {0};
while (EOF != (myChar = getchar())) {
if(isxdigit(myChar)){
buff[counter++] = myChar;
if(counter == 2){
counter = 0;
myChar = strtol(buff, NULL, 16);
putchar(myChar);
}
}
}
printf("\n");
system("pause");
return 0;
}