C语言 如何实时合并十六进制值?

am46iovg  于 2022-12-11  发布在  其他
关注(0)|答案(1)|浏览(198)

为了给予上下文,我有一个十六进制值的传入流,它被写入一个CSV文件,格式如下所示。

20 5a 20 5e 20 7b 20 b1 20 64 20 f8 ...

我不能改变数据的流动方式,但在它被写入CSV文件之前,我希望它在下面的这种格式。

205a 205e 207b 20b1 2064 20f8 ...

当数据到来时,我需要处理它,并以上面所示的格式存储它。我尝试的方法之一是进行位移位和逻辑或,将结果存储在一个变量中。但我这里只有一个指针,指向数据将流入的缓冲区。我有这样的东西。

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);

for(int j=17;j<=145;j+=1){

        fprintf(f_write[file_count],"%02x ", *(curr_ptr+j));

if(j>0 && j%145==0){

       fprintf(f_write[file_count],"\n");
6jygbczu

6jygbczu1#

实际上,你想删除每隔一个空间。为什么不这样做呢?

for(int j=17;j<=145;j+=1){
    fprintf(f_write[file_count], j%2 ? "%02x " : "%02x", *(curr_ptr+j));

不确定是否应该在j的奇数值或偶数值后打印空格,但可以解决这个问题。

相关问题