delphi 整型赋值为字节,

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了delphi 整型赋值为字节,相关的知识,希望对你有一定的参考价值。

InBuf[0]:= $55;
InBuf[1]:= $05;
InBuf[2]:= ;//3330
InBuf[3]:= ;
InBuf[4]:=$AA;
如何将整型的高低位赋值给数组2和三呢,请教高手...

整型数字需要区分32位还是16位,在delphi中,Integer是32位,乃当今绝大多数编译器的缺省理解,SmallInt是16位,从问题描述中,感觉是在使用16位的整数,否则,高低位又有歧义。

方法#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 整型赋值为字节,的主要内容,如果未能解决你的问题,请参考以下文章

Delphi字节转换字节数组

怎样将长整型(long int)通过单片机串口发送,从另一个单片机串口接收。

大小端模式

DELPHI里byte型数组取值与比较

memset的用法

c语言中整型的一维数组中每个元素地址的长度为啥会是4个字节??