hjy : integer;
hjy2 : string; hjy2 := inttohex(hjy,4); 假如hjy2得到的结果是 1A 01,那如果我现在要得到hjy2的高字节和低字节,好办,分别为 1A 01
那现在的问题是假如hjy2得到的结果是 00 01 1A 01,叫法是不是溢出?不管了,那如果我现在要得到hjy2的高字节和低字节,怎么取啊,不会还是 1A 01 吧,前面所谓溢出的 00 01 不管了吗?
hjy2 : string; hjy2 := inttohex(hjy,4); 假如hjy2得到的结果是 1A 01,那如果我现在要得到hjy2的高字节和低字节,好办,分别为 1A 01
那现在的问题是假如hjy2得到的结果是 00 01 1A 01,叫法是不是溢出?不管了,那如果我现在要得到hjy2的高字节和低字节,怎么取啊,不会还是 1A 01 吧,前面所谓溢出的 00 01 不管了吗?
解决方案 »
- 哎,XMLDOMDocument.load(FileName)出错了,帮帮忙吧,有高分咯,^_^。
- 我做的帮助文件中的检索,为什么检索不了,除了Full-text search=Yes这句话,还需要什么东西?
- 关于FASTREPORT的若干问题
- 各位老大们,帮忙看看,前段时间搞.net,很久没有用过delphi了,今天打开自己原来的一下程序,发现全部都不用能了
- 【跪求DELPHI达人】程序出现'MSJTES40.dll'错误?
- Oracle 用B表的数据更新A表:Update A set A.Amt=A.Amt+(select sum(Amt) from B where A.ID=B.ID)
- 怎样把一个标准的程序转换成ActiveX控件......?堆栈溢出??
- FastReport很好用嘛??
- 毕业了
- 一两狂死郎之天衣有缝:那明晚见了!!
- 求一汇总sql语句
- vista+delphi2007的程序 xp下出现错误
你这里总共好像才4byte 不知道你所谓讲的溢出是什么意思? integer也是4byte的。
hjy2 := inttohex(hjy,4);
你这里指定的4是在hjy不足4位的情况下才起作用的(补足4位),如果超过4位你是不用去理会它的。同时它也并不是什么溢出。对应取高低字节和原来4位的取法是一样的。
用hi(hjy2),lo(hjy2)可以取得对应的高低字节,hiword(hjy2),loword(hjy2)可以取得对应的高低字。
const
Test : DWORD = $12345678;
var
pBytes : PByteArray;
begin
// 取低字节
ShowMessage(Format('lowByte = %s',[IntToHex(Lo(Test), 1)]));
// 取高字节
ShowMessage(Format('hiByte = %s',[IntToHex(Hi(Test), 1)]));
// 取低字
ShowMessage(Format('lowWord = %s',[IntToHex(LoWord(Test), 1)]));
// 取高字
ShowMessage(Format('hiWord = %s',[IntToHex(HiWord(Test), 1)]));
// 在内存里从低向高分别取Dword类型字节码
pBytes := @Test;
ShowMessage(Format('byte1 = %s', [Inttohex(pBytes^[0],1)]));
ShowMessage(Format('byte2 = %s', [Inttohex(pBytes^[1],1)]));
ShowMessage(Format('byte3 = %s', [Inttohex(pBytes^[2],1)]));
ShowMessage(Format('byte4 = %s', [Inttohex(pBytes^[3],1)]));
end;
//integer类型,也可以这样取。
var
b:array[0..3] of byte;
i:integer;
begin
i:=100;
move(i,b[0],4);
end;
//int64类似,改一下就可以了。