You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实时合并十六进制值?流式Hex数据格式转换技术问询

解决方案

核心思路是调整输出格式化逻辑,不需要修改原始缓冲区的数据,直接在写入CSV时将每两个连续字节合并为一组输出——本质是字符串格式调整,无需位移/逻辑或操作。

修改后的代码示例

uint8_t *curr_ptr;
uint8_t* dec_buffer=(uint8_t*)calloc(4000,sizeof(uint8_t)*max_len);
init=dec_buffer;
curr_ptr=init+((count)*max_len);

int start = 17;
int end = 145;
// 批量处理成对的字节
for(int j=start; j <= end - 1; j += 2){
    // 连续打印两个字节的十六进制,组间用空格分隔
    fprintf(f_write[file_count], "%02x%02x ", *(curr_ptr+j), *(curr_ptr+j+1));
}
// 处理剩余的单个字节(如果总字节数为奇数)
if((end - start + 1) % 2 != 0){
    fprintf(f_write[file_count], "%02x ", *(curr_ptr+end));
}
// 行尾换行
fprintf(f_write[file_count], "\n");

关键说明

  • 步长调整:循环步长从1改为2,每次取两个连续字节,用%02x%02x直接拼接成4位十六进制字符串,消除单字节间的空格。
  • 边界处理:计算目标区间内的总字节数,若为奇数则单独打印最后一个字节,避免数组越界。
  • 换行修正:原代码中j%145==0的判断存在逻辑漏洞(起始值为17,145并非循环变量的必然落点),改为处理完所有目标字节后直接换行,符合需求的每行结尾格式。

实时处理适配

如果数据流是持续流入、分批处理的,只需保证每次处理的缓冲区片段都按上述逻辑两两组合输出即可,无需额外缓存数据,完全适配实时处理场景。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 07:45:30