You need to enable JavaScript to run this app. C++如何将十六进制字符串按原值追加到字节数组中?
优惠活动
大模型
产品
解决方案
定价
更多

C++如何将十六进制字符串按原值追加到字节数组中?

C++ 十六进制字符串转字节追加方案

完全可以实现,核心逻辑是将十六进制字符串解析为对应数值,再转换为无符号字符类型存入字节容器即可,以下是可直接运行的实现:

基础实现(适配带0x前缀的单字节十六进制串)

适配你示例中的需求场景:

#include <string>
#include <vector>
#include <stdexcept>
#include <cstdint>

uint8_t hex_to_byte(const std::string& hex_str) {
    // 第3参数设为16自动识别0x/0X前缀,按十六进制规则解析
    unsigned long num = std::stoul(hex_str, nullptr, 16);
    // 校验单字节范围,避免溢出
    if (num > 0xFF) {
        throw std::out_of_range("输入十六进制值超出单字节可表示范围[0x00, 0xFF]");
    }
    return static_cast<uint8_t>(num);
}

int main() {
    std::string hexString = "0x30";
    std::vector<uint8_t> byte_vec;
    
    // 追加到字节vector中
    byte_vec.push_back(hex_to_byte(hexString));
    
    // 此时byte_vec[0]的值就是0x30,和你示例中example数组的元素完全一致
    return 0;
}

注意事项

  • 如果需要兼容C++11之前的标准,可以把std::stoul替换为C标准库的strtoul:unsigned long num = strtoul(hex_str.c_str(), nullptr, 16);
  • 如果需要处理无0x前缀的连续十六进制串(比如"303132"需要转成0x30、0x31、0x32三个字节),可以每两个字符拆分一次,再调用上述转换逻辑即可。

内容的提问来源于stack exchange,提问作者cesqueax

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.18 16:06:03