很方便的c++字符串转换为16进制

密码学中常常需要用到字符串转换为十六进制,进而转换为二进制进行加密

鉴于网上搜的很多方法都有些复杂,很多名为c++,实则只是套了个c++的壳子,写的还是c语言的内容,并没有体现出c++语言本身的一些特色,我自己常识写了个字符串转成十六进制的函数,以之备忘。

需要用到的是ios::base中的hex,有时通过流进行数据处理,很多事情会变得异乎寻常的方便

具体代码如下:

string string_to_hex(const string& str) //transfer string to hex-string
{
    string result="0x";
    string tmp;
    stringstream ss;
    for(int i=0;i<str.size();i++)
    {
        ss<<hex<<int(str[i])<<endl;
        ss>>tmp;
        result+=tmp;
    }
    return result;
}

上述代码是将字符串转换为16进制,并将该16进制数用string保存起来,如果要将字符串里的16进制数字直接变为long long形,可直接使用c语言中的strtoll函数
long long string_to_bit(const string& str)//transfer hex-string to bit
{
   
    long long result=strtoll(str.c_str(), NULL, 16);//第三个参数base为合法字符范围,base=2,为0、1,base=16,合法字符则为0-F,开头的0x自动忽略
    return result;
}

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值