我会将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
函数的代码,考虑数字作为字符串中的十六进制(对于base
值8
,它们将是八分之一):
#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;
}