delphi 十六进制高低位拆分,请高手指点!
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了delphi 十六进制高低位拆分,请高手指点!相关的知识,希望对你有一定的参考价值。
取系统时间后:(如:2013转换成十六进制为:07DD),为了把07DD分两个字节传给下位机,不知道如何来分开,
最后结果是:send_data[1] := $07;send_data[2] := $DD;
在线等待,谢谢
procedure TForm1.Button22Click(Sender: TObject);
var
Present: TDateTime;
Year, Month, Day, Hour, Min, Sec, MSec:Word;
sendbuf:Array[1..7] of Byte;
begin
Present:= Now;
DecodeDate(Present, Year, Month, Day);
DecodeTime(Present, Hour, Min, Sec, MSec);
ZeroMemory(@Sendbuf,7);
sendbuf[1]:=StrtoInt(IntToHex(Year,4) shr 8); //此句报错
sendbuf[2]:=StrtoInt(IntToHex(Year,4) and $FF); //此句报错
end;
Year是不是要通过IntToHex来转换一下呢?如果是的话,转换之后再使用shr和and怎么会报错呢?如何改正?谢谢
send_data[1] := x shr 8;send_data[2] := x and $FF;
即为:send_data[1] = $07,send_data[2] = $DD。追问
请看一下代码,谢谢
参考技术A 可是你却跳起了最古老的舞蹈。十六进制高低位分离转换拆分
http://www.cocoachina.com/bbs/read.php?tid=1706049同行解答。
十六进制高低位分离转换拆分
以2016为例:2016(十进制)->0x7E0(十六进制),按照硬件方面要求拆分成0x07,0xE0。
//years=2016转换后的0x7E0 NSInteger years // int存 int years; // char取 char highyears=years>>8;//0x70,当years=2016时 char lowyears=years&0xff;//0xE0,当years=2016时 // int取 int highyears=years>>8;//0x70,当years=2016时 //0xE0,当years=2016时 int lowyears=years&0xff;
以上是关于delphi 十六进制高低位拆分,请高手指点!的主要内容,如果未能解决你的问题,请参考以下文章