如何将字符数组中的数据每半字节(4位)取出,形成一个字符串

ameng203 2009-04-15 11:36:15
char data[8];
//经过读卡器读卡处理后,data中存放有64位共8字节的数据,以如下形式进行打印:
for(int i=0;i<8;i++)
{
printf("%02x",data[i]);
}
//经上述打印后,会输出16个数字,即每字节以2个16进制数字显示

现在的需求是:将这16个数字取出来,形成一个字符串,然后将其通过SQL语句的方式写入数据库。。。

请问:如何将字符数组中的数据每半字节(4位)取出,形成一个字符串?
...全文
320 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
char str[16];
for(int i=0;i <8;i++)
{
sprintf(&str[2*i],"%02x",data[i]);
}

用万能的sprintf
mosaic 2009-04-15
  • 打赏
  • 举报
回复
char data[8];
char data2[16];
//经过读卡器读卡处理后,data中存放有64位共8字节的数据,以如下形式进行打印:
for(int i=0;i <8;i++)
{
printf("%02x",data[i]);
data2[i]=data[i]&0xF0 >>4; //高四位
data2[2*i+1]=data[i]&0x0F; //低四位
}
morris88 2009-04-15
  • 打赏
  • 举报
回复
每半字节按 16 进制打印:

char buf[128];
int len = 0;
for(int i=0;i <8;i++)
{
len += sprintf(buf + len, "%02x", data[i]);
}


每半字节按 10 进制打印:

char buf[128];
int len = 0;
for(int i=0;i <8;i++)
{
len += sprintf(buf + len, "%02d%02d", data[i] & 0x0f, data[i] >> 4);
}
liliangbao 2009-04-15
  • 打赏
  • 举报
回复
帮顶~
老邓 2009-04-15
  • 打赏
  • 举报
回复
可以用memcpy啊
buyan2009 2009-04-15
  • 打赏
  • 举报
回复
取高四位与0xf0相与运算得到,取低四位与0x0f相与得到

69,381

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧