求16进制字符串转换方法,请高手指点

chinagudujian 2010-02-24 01:34:34
unsigned char In[] = {0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff};

转换为 字符串 unsigned char out = "00112233445566778899aabbccddeeff";

求高人指点
...全文
123 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
dubiousway 2010-02-24
  • 打赏
  • 举报
回复
边学边卖,another one:

#include <stdio.h>
void main(){
unsigned char In[] = {0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff};

char dst[256];
for(int i=0;i<sizeof(In);i++){
sprintf(dst+i*2,"%02x",In[i]);
}
dst[i*2]=0;
puts(dst);
}
dubiousway 2010-02-24
  • 打赏
  • 举报
回复

#include <stdio.h>
int main(int argc, char* argv[])
{
char* tb="0123456789abcdef";
unsigned char In[] = {0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff};

char dst[256];
for(int i=0;i<sizeof(In);i++){
dst[2*i]= tb[(In[i]&0xf0>>4)&0x0f];
dst[2*i+1]=tb[In[i]&0xf];
}
dst[2*i]=0;
puts(dst);
return 0;
}
白云飘飘飘 2010-02-24
  • 打赏
  • 举报
回复
第二句应该是这样吧:转换为 字符串
unsigned char *out = "00112233445566778899aabbccddeeff";

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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