这是在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 的转换。
谢谢您的同意。
乔瓦尼
您的代码应该按原样工作,但您也可以使用其中之一:
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;