c++怎么把十六进制数据格式化或者写入char数组
定义char数组的时候很容易实现这个功能chars[10]={0x1,0x2,0x3,0x4};但是已经初始化过的char怎么办呢。。我想到可以再定义一个字符串数组然后用...
定义char数组的时候很容易实现这个功能char s[10] = {0x1,0x2,0x3,0x4};
但是已经初始化过的char怎么办呢。。我想到可以再定义一个字符串数组 然后用strcat连接上去。。
但是我要连接的有十几个字符串数组。。就是用循环写也要好多行。。。。
有没有像sprintf(s, "%d%d", a,a); 这样可以格式化的。。或者连接的。 这样一行就能搞定 。。sprintf格式进去的是asc码。不符合要求 展开
但是已经初始化过的char怎么办呢。。我想到可以再定义一个字符串数组 然后用strcat连接上去。。
但是我要连接的有十几个字符串数组。。就是用循环写也要好多行。。。。
有没有像sprintf(s, "%d%d", a,a); 这样可以格式化的。。或者连接的。 这样一行就能搞定 。。sprintf格式进去的是asc码。不符合要求 展开
4个回答
展开全部
是这种要求吗?
char[] s[10] = {0x1,0x2,0x3,0x4};
如果你的十六进制数据是字符
char x1[10] = {'0', 'x', 'F'};
char x2[10] = {'F'};
那么你需要把0xF或者F转成数值
也就是转成
BYTE bt1 = 0xF (= 15)
如果你的十六进制数据就是数值
那么可以
BYTE* pBtArray = (BYTE*)s;
pBtArray[0] = bt1;
连接的话,看好长度和起始位置,memcpy 内存拷贝过去就OK,或者自己循环逐个复制
不知道理解你的意思了没
char[] s[10] = {0x1,0x2,0x3,0x4};
如果你的十六进制数据是字符
char x1[10] = {'0', 'x', 'F'};
char x2[10] = {'F'};
那么你需要把0xF或者F转成数值
也就是转成
BYTE bt1 = 0xF (= 15)
如果你的十六进制数据就是数值
那么可以
BYTE* pBtArray = (BYTE*)s;
pBtArray[0] = bt1;
连接的话,看好长度和起始位置,memcpy 内存拷贝过去就OK,或者自己循环逐个复制
不知道理解你的意思了没
追问
有没有功能和strcat类似 但可以连接多个数组的。。。 strcat(a,b,c); 这样的。。。但是strcat只能连接两个
追答
memcpy(目标地址,源地址,字节长度)
通过调节目标地址,即可实现
展开全部
好像有个字符数组类的,你试试。
或者使用STL的vector 、list都可以的。
再或者使用string 、CString ,然后在转换回来。
或者使用STL的vector 、list都可以的。
再或者使用string 、CString ,然后在转换回来。
追问
好像我char数组 假如0xff 转换成string 再转换回来就变成 0xf 0xf了- -
追答
你可以在保存到string的时候做个转换,值把ff保存,把0x去掉。最后在转换回来的时候在每次提取2个字符,再在前面加上0x。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-08-24
展开全部
最快的方式,还是采用循环吧
其他方式,肯定也是逐个赋值,移植性很差的
其他方式,肯定也是逐个赋值,移植性很差的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以百度查询一下,注意使用不同的关键词。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询