救命啊~~~怎样才能进行16位数据包到32位的转换??快点啊,老板要杀了我!!!

ytweiwei 2001-09-03 07:16:25
现有一个数据包的格式如下:
**********************************************************************
名称 Name 类型 长度 备注
**********************************************************************
数据包类型 Type Char 1 上海指数:0x10深圳指数:0x20
证券代码 Code[6] Char 6
昨日收盘 Close Long 4
今日开盘 Open Long 4
今日最高 High Long 4
今日最低 Low Long 4
今日最新 New Long 4
总买盘量 Vbuy Long 4 可忽略
总卖盘量 Vsell Long 4 可忽略
总成交量 volume Long 4 单位:百股
总成交额 Amount Long 4 单位:百元
总家数 Total Int 2 可忽略
日期 Date Long 4 可忽略
时间 Time Long 4 可忽略
保留 Reserved[34] Char 34
校验码 Chksum Char 1
证券名称 Name[8] Char 8

从以上的描述可以看出,int 为2位字长,可见为16位的,现在我用下列的函数,得到数据包的指针。
void DynamicData( LPVOID pByte )
{
LPBYTE pBuffer= (LPBYTE)pByte; //pByte指向一个97字节的数据包结构
}
如果现在安上面的数据描述写个 struct 结构,我想肯定要出错的,因为 int 的位数不同,我在Win32下运行,请大家帮帮忙啦,帮我能正确的读出数据,放到 我的 struct 中,谢谢啦,一定给分。
...全文
314 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
hzyyxx 2001-09-04
  • 打赏
  • 举报
回复
用楼上说的#pragma pack (1)
struct
就可以了呀
xj_h 2001-09-04
  • 打赏
  • 举报
回复
用__int8, __int16, __int32, __int64,省了出错
Project->settings->C/C++->Code Generation->Struct member alignment选择对齐方式
为1Byte,或者用#progam.....
ytweiwei 2001-09-04
  • 打赏
  • 举报
回复
真是奇怪了我用
typedef struct Package{
char Type[1];
char Code[6];
long Close;
long Open;
long High;
long Low;
long New;
long Vbuy;
long Vsell;
long Volume;
long Amount;
short Total;
long Date;
long Time;
char Reserved[34];
char Chksum[1];
char Name[8];
}STOCK;
int size = sizeof( STOCK );
测试,size 竟然等于 100 不是 96 ,这是怎么回事?
protale 2001-09-03
  • 打赏
  • 举报
回复
奇怪!windindance(风之舞)没有说错,long型是4个字节,short是2个字节,没有冲突啊。
在WIN32中想完成你的那个问题,除了这一点以外,还需使用如#pragma pack(1)的指令去掉
对齐优化。

sorry2000 2001-09-03
  • 打赏
  • 举报
回复
lwglucky(黑客。。呵呵~~~)
呵呵
ytweiwei 2001-09-03
  • 打赏
  • 举报
回复
见笑啦,哈哈,楼上的,说我是才鸟,为什么来灌水呢?
lwglucky 2001-09-03
  • 打赏
  • 举报
回复
才鸟太多。。。
ytweiwei 2001-09-03
  • 打赏
  • 举报
回复
可是用了万能数组,那我怎么拔它转换成 int 或 long 呢?
sorry2000 2001-09-03
  • 打赏
  • 举报
回复
实在不行,就用byte数组。这是一个万能的办法
strcuct {
byte Code[6],
byte Close[4],等等


}
ytweiwei 2001-09-03
  • 打赏
  • 举报
回复
那 long 呢?
windindance 2001-09-03
  • 打赏
  • 举报
回复
不要用int,用short

16,550

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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