我有一个格式如下的文件:
0 b71b3a8de0c18abd2e56ec5f4efc4af2ba084604
1 4bec20891a68887eef982e9cda5d02ca8e6d4f57
第一个值是整数,第二个整数是以十六进制编码的20字节值。我希望能够使用fscanf
循环读取这两个值,如下所示:
FILE *file = fopen("file.txt", "r");
int id;
char hash[20];
while(fscanf(has_chunks, "%i %40x\n", &id, c_hash) == 2){
// Do Stuff
}
然而,这显然不起作用,因为%40x
期望一个无符号的int指针,但这不足以容纳该值。我知道我可以做多个格式化程序,比如%x%x%x
,但这看起来并不优雅。有没有更好的方法可以使用fscanf
?
答案 0 :(得分:1)
for(int i=1; i <= 100; i++)
{
Thread.Sleep(1000);
forOddOutput.Text = i.ToString();
}
每对字符都在b7 1b 3a 8d e0 c1 8a bd 2e 56 ec 5f 4e fc 4a f2 ba 08 46 04
到0
之间。这适合一个字节,或0xff
。散列函数通常也需要unsigned char
。
使用以下转换:
unsigned char