Delphi 字节到单数

问题描述 投票:0回答:1

这是在Delphi中将4字节数组转换为单个数组的方法吗?

type
  RFloatToBytes = packed record
        case IsFloat: Boolean of
          True: (SingleVal: Single);
          False: (ByteVals: array[0..3] of Byte);
        end;
...

function  XP_BytesToSingle(  Const B: array of Byte): Single;
Var Locale:RFloatToBytes;
    begin
      Locale.ByteVals[0] := B[0];
      Locale.ByteVals[1] := B[1];
      Locale.ByteVals[2] := B[2];
      Locale.ByteVals[3] := B[3];
      Result := Locale.SingleVal;
    end;

试图找到一个类似的函数 函数 BytesTointo.... 进入单元 IdGlobal 但没有提供 float、extend、single 的转换。

谢谢您的同意。

乔瓦尼

delphi
1个回答
0
投票

您的代码应该按原样工作,但您也可以使用其中之一:

FUNCTION XP_BytesToSingle(CONST B : ARRAY OF BYTE) : Single;
  BEGIN
    MOVE(B[LOW(B)],Result,SizeOf(Single))
  END;

FUNCTION XP_BytesToSingle(CONST B : ARRAY OF BYTE) : Single;
  VAR
    S : Single ABSOLUTE B;

  BEGIN
    Result:=S
  END;

您不需要“IsFloat”字段。它只会占用您的记录空间:

type
  RFloatToBytes = packed record
        case Boolean of
          True: (SingleVal: Single);
          False: (ByteVals: array[0..3] of Byte);
        end;
© www.soinside.com 2019 - 2024. All rights reserved.