var
iSourceNode:Longword;
curSequenceNumber:Array[0..4] of Byte;copymemory(@curSequenceNumber,@iSourceNode,sizeof(iSourceNode));
如果iSourceNode=1的话,复制内存,那么缓冲区curSequenceNumber中得到的是
01 00 00 00,而不是我想要的00 00 00 01,请问为什么??难道我每个数字写入缓冲区的时候,必须要手工交换高低字节吗??
iSourceNode:Longword;
curSequenceNumber:Array[0..4] of Byte;copymemory(@curSequenceNumber,@iSourceNode,sizeof(iSourceNode));
如果iSourceNode=1的话,复制内存,那么缓冲区curSequenceNumber中得到的是
01 00 00 00,而不是我想要的00 00 00 01,请问为什么??难道我每个数字写入缓冲区的时候,必须要手工交换高低字节吗??
解决方案 »
- 请教个事务问题:循环大约上万次删除记录,用一个事务,是否会不安全?
- 不懂delphi请大大们帮我翻译下vc....谢鸟...分全部奉上
- TDateTime怎么转换成C++中的Time_T类型
- SQL 2005连接问题
- clientdataset汉字参数
- Borland新总裁上任,曾负责微软MSDN
- 最近忙换工作,本身的工作也比较忙一直没空找家新公司。比较郁闷,来散分!
- 怎么让button按了不会凹下去,即不触发click事件
- 奇怪了,不知道问题在哪里,帮我看看
- 求Delphi5.0
- 如何找到多媒体设备问题,如mtp设备,数码相机等通过usb接口连接的设备
- 再问adoquery插入更新时保存中文数据不完整
相当于curSequenceNumber0]=1;
本来就是这样放的呀
不然写的动态连接库岂不是乱套了,还哪谈得上通用性呀。我想楼主担心的问题应该是多余的。只要不自己定义排列顺序就行了。
C语言里也用类似的机制,应该是不会出错的。
不要自己去指定哪个字节写什么值
C语言里也用类似的机制,应该是不会出错的。
不要自己去指定哪个字节写什么值
iSourceNode:Longword;
curSequenceNumber:Array[0..4] of Byte;iSourceNode:=1;....................
接下来怎么整?? 才能让curSequenceNumber中的是00 00 00 01,而不是01 00 00 00呀???
iSourceNode:Longword;
curSequenceNumber:Array[0..4] of Byte;
begin
iSourceNode:=1;
PLongword(@curSequenceNumber[0])^:= iSourceNode shl 32 ;
...
procedure TLT.Z_SerialLongWord(iValue:LongWord;SerialBuf:Pointer); //将delphi的longword按右对齐序列化到缓冲区内 $1=00 00 00 01,而不是01 00 00 00(delphi默认的)
var
desBuf:Array[0..3] of byte;
tmpBuf:Array[0..3] of byte;
begin
zeromemory(@desBuf,sizeof(tmpBuf));
zeromemory(@tmpBuf,sizeof(tmpBuf)); copymemory(@desBuf,@iValue,sizeof(iValue));
tmpBuf[0]:=desBuf[3];
tmpBuf[1]:=desBuf[2];
tmpBuf[2]:=desBuf[1];
tmpBuf[3]:=desBuf[0]; copymemory(@desBuf,@tmpBuf,sizeof(tmpBuf));
copymemory(SerialBuf,@desBuf,sizeof(desBuf));
end; //3037142018=$b5071c02 存入缓冲区内: b5071c02 而不是 02 1c 07 b5
{ //调用示例:
var
iSourceNode:Longword;
tmpBuf:Array[0..3] of Byte;
begin
iSourceNode:=$b5071c02;
Lt.Z_SerialLongWord(iSourceNode,@tmpBuf);
end;
}