我如何将十六进制输入到用户c中



我会将HEX输入从用户输入buffer数组,但我不接受,scanf不合适。这样的输入数据(0x 06 41 42 43 0f 52 53)。同样,我想将字符串转换为整数键入数组的某个部分。我使用了atoi,什么是最好的方法?

#include <stdio.h>
int main(){
    char buffer[1000];
    char dest[3];
    int x;
    //scanf("%s",buffer);
    x=atoi(strncpy(dest,buffer+1,4))
}

以下简单函数将带有十六分数的字符串转换为整数:

int atox(const char *s)
{
    int x= 0;
    while (*s) {
        x= x*16+(*s>'9'?(toupper(*s)-'A'+10):*s-'0');
        s++;
    }
    return x;
}

并将其称为:

printf("%02xn",atox("42"));
printf("%02xn",atox("a1"));
printf("%02xn",atox("A1"));

请注意,字符串必须完全是要转换的字符串,因此没有空格或其他。

这是使用strtol函数的代码,考虑数字作为字符串中的十六进制(对于base8,它们将是八分之一):

#include <stdio.h>
#include <stdlib.h>
int main(void)
{
    char *s="00 06 41 42 43 0f 52 53";
    char *endpoint=s;
    int base=16,count=1;
    long int result=0;
    do
    {
      result=strtol(endpoint,&endpoint,base);
      printf("value %d %ldn",count,result);
      count++;
    }while((endpoint - s) < (size_t)strlen(s) );
    return 0;
}

最新更新