c 串转string_C ++将字符串转换为十六进制,反之亦然

字符串如“Hello World”到十六进制格式:48656C6C6F20576F726C64。

啊,你走了:#include std::string string_to_hex(const std::string& input){

static const char* const lut = "0123456789ABCDEF";

size_t len = input.length();

std::string output;

output.reserve(2 * len);

for (size_t i = 0; i 

{

const unsigned char c = input[i];

output.push_back(lut[c >> 4]);

output.push_back(lut[c & 15]);

}

return output;}#include #include std::string hex_to_string(const std::string& input){

static const char* const lut = "0123456789ABCDEF";

size_t len = input.length();

if (len & 1) throw std::invalid_argument("odd length");

std::string output;

output.reserve(len / 2);

for (size_t i = 0; i 

{

char a = input[i];

const char* p = std::lower_bound(lut, lut + 16, a);

if (*p != a) throw std::invalid_argument("not a hex digit");

char b = input[i + 1];

const char* q = std::lower_bound(lut, lut + 16, b);

if (*q != b) throw std::invalid_argument("not a hex digit");

output.push_back(((p - lut) <

}

return output;}

(这假设一个char有8位,所以它不是很便携,但你可以从这里拿它。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值