我想把MD5哈希转换成4个十六进制数。我的密码怎么了?
//hash = 8ce4b16b22b58894aa86c421e8759df3
char *hash = argv[1];
unsigned int parts[4];
sscanf(&hash[0], "%x", &parts[0]);
sscanf(&hash[8], "%x", &parts[1]);
sscanf(&hash[16], "%x", &parts[2]);
sscanf(&hash[24], "%x", &parts[3]);
printf("Part[0]: %x\n", parts[0]);
printf("Part[1]: %x\n", parts[1]);
printf("Part[2]: %x\n", parts[2]);
printf("Part[3]: %x\n", parts[3]);
最佳答案
在您的代码中,您希望但忘记将十六进制值的输入限制为8(字符)。您需要将字段宽度说明符与格式说明符一起使用。你需要一些
sscanf(&hash[0], "%8x", &parts[0]);
sscanf(&hash[8], "%8x", &parts[1]);
sscanf(&hash[16], "%8x", &parts[2]);
sscanf(&hash[24], "%8x", &parts[3]);
关于c - 将哈希转换为4个十六进制数字,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29515313/