关于字符串转换成数组的问题,谢谢~~

hlfisagoodboy 2004-01-07 09:11:13
一个字符串:7e0dff0a310000000000000000003a
怎么放进一个数组bint[40],并且是两个两个一起的
如bint[0]="7e" bint[1]="0d"......
谢谢~~~~
...全文
65 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
hlfisagoodboy 2004-01-08
  • 打赏
  • 举报
回复
谢谢各位,由于分数太少了,不能大家都有,不好意思,谢谢。
我太爱CSDN了~~~~
fierygnu 2004-01-07
  • 打赏
  • 举报
回复
用sscanf,象这样:
#include <stdio.h>

int main()
{
char sz[] = "7e0dff0a310000000000000000003a";
int n;
int i;
for (i = 0; i < sizeof(sz)/2; ++i) {
sscanf(sz+2*i, "%2x", &n);
printf("n = %#x\n", n);
}
return 0;
}
tiarts 2004-01-07
  • 打赏
  • 举报
回复
怎么把一个一个unsiged short 读出来?请赐教!
hlfisagoodboy 2004-01-07
  • 打赏
  • 举报
回复
回复人: fierygnu(va_list) ( ) 信誉:105 2004-01-07 10:25:00 得分:0

楼主要放到什么数组里?是要int变量的值等于0x7e还是“7e”?这些都不清楚,怎么能有答案?
----------------------------------------------------------------------------------

是要int变量的值等于0x7e
BLUETUNE 2004-01-07
  • 打赏
  • 举报
回复
呵呵,先按楼主的字面意思来吧
fierygnu 2004-01-07
  • 打赏
  • 举报
回复
楼主要放到什么数组里?是要int变量的值等于0x7e还是“7e”?这些都不清楚,怎么能有答案?
BLUETUNE 2004-01-07
  • 打赏
  • 举报
回复
字符在上面数组变量中的位置是,数组变量中高位存的是双数的字符,如myarray[0] 高8位是'e',低8位是‘7’,在从数组中读回字符是应注意.
huruiduan1983 2004-01-07
  • 打赏
  • 举报
回复
你只要清楚char和int,long等系统默认结构的字节大小,就可以随意转换,
只要取出来时注意转换形式就可以了。
dddd8888 2004-01-07
  • 打赏
  • 举报
回复
厉害
victor_cui 2004-01-07
  • 打赏
  • 举报
回复
很容易啊
char *str = "7e0dff0a310000000000000000003a";
unsigned short myarray[40];
memcpy(myarray, str, strlen(str));就可以了
因为myarray的每个位置宽度为两个字节,所以str会自动把两个放入一个中的
BLUETUNE 2004-01-07
  • 打赏
  • 举报
回复
回复人: hlfisagoodboy(泡泡糖) ( ) 信誉:100 2004-01-07 11:09:00 得分:0

是要int变量的值等于0x7e

这样要求的话,就不是这么简单了。需要做字符转换处理,试写程序如下:
char *str = "7e0dff0a313a";
char chTemp[100] = {'0'};

for(int i =0; i < strlen(str); i++)
{
if( (str[i] >= '0') && (str[i] <= '9') )
{
chTemp[i] = str[i] - 48;
}
else if( (str[i] >= 'a') && (str[i] <= 'f') )
{
chTemp[i] = str[i] - 87;
}
}
/*
for (i = 0; i < strlen(str); i++)
{
cout << (unsigned short)chTemp[i]<< ' ' ;
}
cout << '\n';
*/
unsigned short myarray[40];
memcpy(myarray, chTemp, strlen(str));
unsigned short iLow ;
unsigned short iHigh ;
unsigned short Result[40] ;
for(i = 0; i < strlen(str); i++ )
{
iLow = myarray[i] >> 8;
iHigh = (myarray[i] & 0x0f);
Result[i] = (iHigh<<4) | iLow;
}

/*
for(i = 0; i < strlen(str) / 2; i++ )
{
cout << Result[i] << ' ' ;
}
*/

Wolf0403 2004-01-07
  • 打赏
  • 举报
回复
memcpy 是直接的内存复制。
liuxianguo964 2004-01-07
  • 打赏
  • 举报
回复
请问memcpy(myarray, str, strlen(str));是什么意思啊???

64,654

社区成员

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

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