c++ - 在 C++ 中将 MD5 表示形式转换为十六进制

标签 c++ hex md5

我有一个 MD5 字符串,我正在将其转换为十六进制。有一个更好的方法吗?我目前正在做:

unsigned char digest[16]; 
string result;
char buf[32];
for (int i=0; i<16; i++)
{
   sprintf_s(buf, "%02x", digest[i]);
   result.append( buf );
}

最佳答案

这个版本应该会更快。如果您需要更快的速度,请将 string result 更改为 char 数组。

static const char hexchars[] = "0123456789abcdef";

unsigned char digest[16];
string result;

for (int i = 0; i < 16; i++)
{
    unsigned char b = digest[i];
    char hex[3];

    hex[0] = hexchars[b >> 4];
    hex[1] = hexchars[b & 0xF];
    hex[2] = 0;

    result.append(hex);
}

关于c++ - 在 C++ 中将 MD5 表示形式转换为十六进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16827587/

相关文章:

将十六进制扫描 (scanf) 从无符号整数数组转换为十进制

javascript - Hue shift 串色

unix - 在 UNIX shell 脚本中将十进制转换为十六进制

java - 在java中生成MD5字符串

c++ - USB相机的文件路径

c++ - 为升压指针容器调用基类的复制构造函数?

javascript - 使用javascript计算大文件的MD5哈希

c - 字符串的 MD5 在 C 中给出了错误的输出

c++ - VS2013 错误 0xC0000005 : when using libcurl

c# - 传递结构似乎会损坏数据