怎样将字符型数组转为ULONG型的数组呢?

Balana_yan 2011-11-16 03:09:15
如题
...全文
154 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
W1nds 2011-11-16
  • 打赏
  • 举报
回复
定义一个ULONG型的数组
然后转换挨个填充过去。。。。。
carter10004 2011-11-16
  • 打赏
  • 举报
回复
memcpy();
sxqinge 2011-11-16
  • 打赏
  • 举报
回复
呵呵不好意思手敲快了,在GetValues()函数里调用GetPack函数时,Pack因为是一个对象,所以需要在前面加个引用“&”
sxqinge 2011-11-16
  • 打赏
  • 举报
回复

定义个结构体接受,比如你要接受4个数据
struct TReceiveDatas{
unsinged long data1;
unsinged long data2;
unsinged long data3;
unsinged long data4;
};

void GetPack(void* Pack, const unsigned char* datas, const unsigned int Len)
{
//datas是你接受到的字符串。Len是指你的数据长度,也就是你接受到的字节数
memcpy(Pack, datas, Len);
}

void GetValues()
{
const char* yourdatas;
TReceiveDatas Pack;
GetPack(Pack, yourdatas, sizeof(Pack));//由于你是接受4个ULONG数据,这里的Len也可以直接写为16.
//下面你就可以得到每个数据了:
//Pack.data1,Pack.data2,Pack.data3,Pack.data4
}
Balana_yan 2011-11-16
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 echoyin59 的回复:]
char cTmp[4]={0x01,0x02,0x03,0x04};
首先将cTmp[4]强制转换为ULONG ulTmp[4]={0x01,0x02,0x03,0x04};
然后ulTmp[0]<<24,ulTmp[1]<<24,ulTmp[2]<<8,ulTmp[3]不变
最后ULONG result=4个数值相与
[/Quote]

对于数据量小你这个可以。但是如果我的char数组是几千个数呢
诶呦 2011-11-16
  • 打赏
  • 举报
回复
char cTmp[4]={0x01,0x02,0x03,0x04};
首先将cTmp[4]强制转换为ULONG ulTmp[4]={0x01,0x02,0x03,0x04};
然后ulTmp[0]<<24,ulTmp[1]<<24,ulTmp[2]<<8,ulTmp[3]不变
最后ULONG result=4个数值相与
sxqinge 2011-11-16
  • 打赏
  • 举报
回复
...没清楚LZ的意思
LZ是不是说接受到的内容是字符形式的,比如“13 4f 2a 14 ...”
你可以用union来接受数据
Balana_yan 2011-11-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ndy_w 的回复:]
题目不清楚啊
[/Quote]

就是有一个字符数组,我要将每四个字节一起转换为一个ULONG型的数存在ULONG型数组中
ndy_w 2011-11-16
  • 打赏
  • 举报
回复
题目不清楚啊

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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