BYTE数组转char数组如何转?

nbhx2010 2014-08-26 08:11:12
#define  buffer 1000
BYTE AID[10]
AID[0] = 0X01
AID[1] = 0X02
AID[2] = 0XE3
AID[3] = 0X04
AID[4] = 0X05
AID[5] = 0XC6
AID[6] = 0X07
AID[7] = 0XB8
AID[8] = 0X09
AID[9] = 0XD2
char Atemp[buffer]


怎么把AID赋值给Atemp ? 并取得Atemp的数据实际长度??
...全文
503 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
lm_whales 2014-08-26
  • 打赏
  • 举报
回复
你要选确定,Byte 数组里储存的是啥东西,有何意义 然后确定,如何用ASCII 表示,或者字符串表示,或者直接显示为图片 如果本身是字符串,那么可以根据字符串的编码,来显示字符串的内容 如果不是,而是其他编码,按照该编码格式,处理 如果不知道格式,自己找资料,或者摸索研究 单凭你给出的哪些内容,无法确定数据格式,当然长度也无从说起 另外,单单字符串,不同编码就有不同意义, 所以确定数据的含义,才是你的当务之急
微型蚂蚁 2014-08-26
  • 打赏
  • 举报
回复
引用 2 楼 nbhx2010 的回复:
[quote=引用 1 楼 piaobotudou 的回复:] char Atemp[buffer] = {0}; memcpy(Atemp, AID, 10); 然后可以当作字符串处理。
这样一操作,Atemp是个乱码啊 , 调试显示 Atemp的值为 “ 霋? ” [/quote] AID里面的内容翻译成ascii有些是不可见字符当然是乱码。 除非你希望结果是 在Atemp中存储的是这样一个字符串0102e3... char Atemp[1000] = {0}; for(int i=0; i<10; ++i) { sprintf(&Atemp[i*2], "%02x", AID[i]); }
xiaohuh421 2014-08-26
  • 打赏
  • 举报
回复
这样一操作,Atemp是个乱码啊 , 调试显示 Atemp的值为 “ 霋? ” 因为你给出的东西它本就不是一个可显示的串, 是乱码那是肯定的. 你是想把 AID[0] = 0X01 AID[1] = 0X02 AID[2] = 0XE3 AID[3] = 0X04 AID[4] = 0X05 AID[5] = 0XC6 AID[6] = 0X07 AID[7] = 0XB8 AID[8] = 0X09 AID[9] = 0XD2 变成 "01E30405...."这样吗? 那就是需要格式化 sprintf(atemp, "%08X%08X.........", aid[0], aid[1]........); //省略号处自己按前面的样子填写
赵4老师 2014-08-26
  • 打赏
  • 举报
回复
长度自己用一个size_t类型的变量记住。
nextseconds 2014-08-26
  • 打赏
  • 举报
回复
强制类型转换赋值 Atemp[i] =(char)AID[i];
nbhx2010 2014-08-26
  • 打赏
  • 举报
回复
引用 1 楼 piaobotudou 的回复:
char Atemp[buffer] = {0}; memcpy(Atemp, AID, 10); 然后可以当作字符串处理。
这样一操作,Atemp是个乱码啊 , 调试显示 Atemp的值为 “ 霋? ”
微型蚂蚁 2014-08-26
  • 打赏
  • 举报
回复
char Atemp[buffer] = {0}; memcpy(Atemp, AID, 10); 然后可以当作字符串处理。
lm_whales 2014-08-26
  • 打赏
  • 举报
回复
0x01 0x02 这只是C,C++进制常数,当他们储存为BYTE 数组的时候, 是按照 BYTE这种一字节无符号整数存储的,存储的实际是2进制数据 目前为止,计算机只能存储2进制数据,其他进制是一种编码数据 十进制至少有, BCD,压缩BCD和ASCII三种方式存储 十六进制也是 ASCII 格式数据 所以,数据内容的含义才是重要的
wince2000 2014-08-26
  • 打赏
  • 举报
回复
引用 7 楼 lm_whales 的回复:
你要选确定,Byte 数组里储存的是啥东西,有何意义 然后确定,如何用ASCII 表示,或者字符串表示,或者直接显示为图片 如果本身是字符串,那么可以根据字符串的编码,来显示字符串的内容 如果不是,而是其他编码,按照该编码格式,处理 如果不知道格式,自己找资料,或者摸索研究 单凭你给出的哪些内容,无法确定数据格式,当然长度也无从说起 另外,单单字符串,不同编码就有不同意义, 所以确定数据的含义,才是你的当务之急
不会吧?0x01 0x02 这不是十六进制吗?怎么会无法确定?

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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