您似乎有两个名为hash的变量,除了一个隐含在您的代码中.
该sscanf
语句试图回读hash
自己,但显然它不会找到任何十六进制数字.
%x
可能会在不同平台上以十六进制加载不同大小的整数,因为您没有为每个字段指定任何特定长度.
您没有考虑机器字节序.
如果你有一个十六进制字符串,那么让我们说hashString
你可以试试
int fieldsScanned = sscanf (hashString, "%8x%8x%8x%8x", &hash.ui[0], &hash.ui[1], &hash.ui[2], &hash.ui[3]); if (fieldsScanned == 4) { // MD5 sum is in hash variable. }