【delphi】中 move 应用 - 整型数转字节流

在互联网开发中,经常需要把一个32位整形数字(或者64位)转换成字节数据。例如在微信公众号中消息加密解密就需要把消息的长度(一个无符号32位数)转换成字节类型,转换成字节后,排列方式有两种,一种是低字节在前高字节在后(比较常用的),第二种就是高字节在前,低字节在后。下面分别举例说明:

比如有一个32位的整型数:$12345678(16进制)

转换成字节流后,有4个字节。

低字节在前高字节在后:$78 $56 $34 $12
高字节在前低字节在后:$12 $34 $56 $78

使用 move 实现低字节在前高字节在后方式如下:

procedure TForm_PUB_Menu.Button1Click(Sender: TObject);
var
  i : DWord;
  B : TBytes;  //动态字节数组
  C : array[0..3] of Byte;  //静态数组,长度固定
begin
  i := $12345678;
  SetLength(B,Sizeof(i)); //需要预先设置长度,保留空间
  move(i,B[0],Sizeof(i));   //转成字节,注意必须是B[0],此处不能直接使用B
  move(i,C,Sizeof(i));  //静态数组直接使用,无需设置长度,使用变量名即可,无需下标

  //返回结果:
  // B[0] := $78
  // B[1] := $56
  // B[2] := $34
  // B[3] := $12

  // C[0] := $78
  // C[1] := $56
  // C[2] := $34
  // C[3] := $12
end;

使用 move 实现高字节在前低字节在后方式是使用上面的函数先生成好字节流,然后再进行顺序交换即可。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海纳老吴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值