Cpp / Hash 所得字符串转成 Hex 字符串。

遇到的需求如下,将待明文 Hash 所得的结果转成 Hex 字符串。最开始没懂这条需求是什么意思,后来查阅资料之后终于弄到了,总结如下:

字符串中每个字节按照整型读取,将该值转成 16 进制数并转成字符串,最终所有的单个 16 进制串按照顺序拼接就得到了上述字符串的16进制字符串。

代码:

    int StringToHex(const std::shared_ptr<char> &psrc, const size_t &srclen,
                    std::string &strdist)
    {
        if (nullptr == psrc || 0 == srclen)
        {
            return -1;
        }
        strdist.clear();
        for (size_t i = 0; i < srclen; ++i)
        {
            std::stringstream stream;
            //避免丢失高位 0 。
            stream << std::hex << ((psrc.get()[i] & 0xf0) >> 4) << (psrc.get()[i] & 0x0f);
            strdist += stream.str();
        }
        return 0;
    }

为什么大多数算出明文的 Hash 值之后需要转成 Hex 字符串?

主要为了方便查看,因为最开始的 hash 值里面比较杂乱,包括可见字符、不可见字符、负值,有的字符干脆每一位都是 0 ,所以不容易人为的查看和比较。

故将其转成 Hex 字符串,其实转成 Base 64 串也可以。

 

(SAW:Game Over!)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值