sprintf将ascll转换为16进制出错?

在做udp服务器端,接收到的为ascll码,所以想用sprintf转16进制。

for(i=0;i<recv_len;i++)
        {       
            sprintf(buf+i,"%02X", (unsigned char)recv_buf[i]);
        }
for(i=0;i<recv_len;i++)
        {       
        printf("%02X ",(unsigned char)recv_buf[i]);
        }

这样打印就没问题,打印结果是:AD BA 00 01 0100 DB

也就是说原本的recv_buf的16进制应该是“AD BA 00 01 0100 DB”(一部分)
转换后buf成了“AB0000D”
现象就是他只把每个字节的第一个字符转了,怎么改一下可以解决 求助大家

1个回答

将buf+i改为buf+2×i试试看

weixin_44522056
weixin_44522056 。。我笨了 这么简单的问题,。。。
8 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问