在 C 中使用 strtoull() 转换为 long long int

标签 c hex long-integer

我想做的是接收一个包含数千行十六进制值的输入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/

相关文章:

c - `getpid()` 是否在进程的每个线程中返回不同的值?

c - 如何检查 no 是否为阶乘?

html - CSS ARGB RGBA 十六进制格式

c - 为什么当我指定 "%.2x"时会得到 8 个十六进制数字

C中字符串格式的十六进制数转换为0xFFFF格式的wchar_t类型

python - 如何在Python中输入Googol?

java - 需要 int 但有问题并发现零字节

c - 文字中的非 ASCII、非 Unicode 字符

java - 为什么 (long)9223372036854665200d 给我 9223372036854665216?

c - 编写Linux shell