我有一个如下所示的文本文件:
0000000000000000 0000000000000000
FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF
3000000000000000 1000000000000001
1111111111111111 1111111111111111
0123456789ABCDEF 1111111111111111
1111111111111111 0123456789ABCDEF
0808080808080808 0000000000000000
FEDCBA9876543210 0123456789ABCDEF
7CA110454A1A6E57 01A1D6D039776742
0131D9619DC1376E 5CD54CA83DEF57DA
使用 C 阅读这些内容的最佳方式是什么?我第一次尝试使用 fscanf()
将它们读入 int
变量,但这些是 64 位十六进制值,所以 int
类型太小而无法完全读取它们,并且部分值被截断了。
我的尝试:
while( fscanf(infile, "%x %x", &key, &plaintext) != EOF )
{
printf("%x\t\t%x\n", key, plaintext);
}
是否有足够大的类型可以在 C 中保存它?如果不是,我的其他存储选项是什么?字符数组?
谢谢
请注意,我使用的是 ANSI C,GCC 4.5.2 (MinGW)
最佳答案
只需使用 inttypes.h
中的宏和 typedef:
uint64_t key,plaintext;
fscanf(infile,"%u" PRIx64 " %u" PRIx64,&key, &plaintext);
关于c - 从 C 文件中读取 64 位十六进制值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9245563/