delphi 整型赋值为字节,
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了delphi 整型赋值为字节,相关的知识,希望对你有一定的参考价值。
InBuf[0]:= $55;
InBuf[1]:= $05;
InBuf[2]:= ;//3330
InBuf[3]:= ;
InBuf[4]:=$AA;
如何将整型的高低位赋值给数组2和三呢,请教高手...
方法#1:
uses SysUtils;
...
X : SmallInt;
...
InBuf[2] := WordRec( X ).Bytes[1];
InBuf[3] := WordRec( X ).Bytes[0];
方法#2:
...
X : SmallInt;
...
InBuf[2] := Ord( ( PAnsiChar(@X) + 1 )^ );
InBuf[3] := PByte( @X )^;
如果是Delphi 2009以上,则InBuf[2]的赋值也可简化为InBuf[2]:=( PByte( @X ) + 1 )^;
以上方法是把高位置于InBuf[2],低位置于InBuf[3],若是相反,则办法更简单:PWord( @InBuf[2] )^ := X; 参考技术A integer是32位长度相当于4个字节,你的数组元素2和3加起来是2个字节,所以只能取其中两个字节出来给数组。大概就是如下代码吧:
var m : Integer;
m :=123456;
InBuf[2]:= PByte(integer(@m)+1)^;
InBuf[3]:= PByte(integer(@m)+2)^;
怎么把一个整数转化为3个十六进制字节 delphi
如何把一个整数转化为3个十六进制字节 delphi
比如把整数149259(都是6位数据整型数) 转换为十六进制为2470B然后再分开为三个字节02 47 0B,求实现代码
示例
var
ID: Integer;
ByteBuf: array[0..2] of Byte;
begin
ID := 149259;
..........
ByteBuf[0] := //02
ByteBuf[1] := //47
ByteBuf[2] := //0B
end;
------解决思路----------------------
var
ID: Integer;
ByteBuf: array[0..2] of Byte;
begin
ID := 149259;
Move(id,ByteBuf[0],3); //字节顺序会与你的要求相反
end;
------解决思路----------------------
var
ID: Integer;
ByteBuf: array[0..2] of Byte;
begin
ID := 149259;
ByteBuf[0] := (ID and $FF0000) shr 16;
ByteBuf[1] := (ID and $00FF00) shr 8;
ByteBuf[2] := ID and $0000FF;
end;
以上是关于delphi 整型赋值为字节,的主要内容,如果未能解决你的问题,请参考以下文章