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怎么会报错呢?如何改正?谢谢

设x是16位二进制值(x=$07DD),则使用以下语句可分离
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 十六进制高低位拆分,请高手指点!的主要内容,如果未能解决你的问题,请参考以下文章

十六进制高低位转换,返回十进制数

我在用delphi2007打开一个delphi工程文件的时候,出现下列错误: 请高手指点

请教DELPHI中截图位置的问题,请高手们指点一下.谢谢啦

P1100 高低位交换

P1100 高低位交换

qt中16进制分高低字节传输