gpt4 book ai didi

c - 如何在 C 中通过命令行接受 md5sum?

转载 作者:太空宇宙 更新时间:2023-11-04 01:15:54 25 4
gpt4 key购买 nike

typedef union
{
uint ui[4];
} md5hash;

void main(void)
{
int opt;

while ((opt = getopt(argc, argv, "c:t:s:h:")) != -1) {
switch (opt) {
case 'h':
hash = optarg;
break;
default: /* '?' */
exit(EXIT_FAILURE);
}
}

md5hash hash;

sscanf(hash, "%x%x%x%x", &hash.ui);
}

./program -h ffffffffffffffffffffffffffffffffffff

我想执行上述操作,但 sscanf 无法正确接受 md5sum...

最佳答案

  1. 您似乎有两个称为散列的变量,除了一个隐含在您的代码中。
  2. sscanf 语句试图将 hash 读回自身,但显然它不会找到任何十六进制数字。
  3. %x 可能会在不同平台上加载不同大小的十六进制整数,因为您没有为每个字段指定要读取的任何特定长度。
  4. 您没有考虑机器字节顺序。

如果你确实有一个十六进制字符串,让我们在 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.
}

关于c - 如何在 C 中通过命令行接受 md5sum?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/351519/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com