我想做的是接收一个包含数千行十六进制值的输入txt文件,并将它们转换为long long int。
示例:
0x7f1a91026b00
0x7f1a91026b03
0x7f1a91027130
0x7f1a91027131
0x7f1a91027134
0x7f1a91027136
0x7f1a91027138
0x7f1a9102713a
0x7f1a9102713c
但是我将它们作为字符串读取,如何将它们转换为 long long int 类型?我被告知我可以使用 strtoull() 函数,但我不明白它是如何工作的。这就是我目前拥有的:
int main (int argc, char **argv){
if(argc!=2){
printf("error\n");
return 0;
// if there is no input then print an error
}
FILE *file = fopen(argv[1], "r");
char linestring[BUFSIZ];
char **ret;
while (fgets(linestring, sizeof(linestring), file)) // reads the entire file until it hits Null
{
strtoul(linestring, ret, 16);
printf("%s\n", ret);
printf("%s\n", linestring);
}
fclose(file);
}
这显然不起作用,但有人可以向我解释我应该做什么吗?
最佳答案
strtoull
函数返回转换后的值,所以你想要这样的东西
char *endptr;
unsigned long long value = strtoull(linestring, &endptr, 16);
printf( "%llx\n", value );
关于在 C 中使用 strtoull() 转换为 long long int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28735834/