썬스팍~에서 -0.606039 값을 바이너리파일로 저장 했습니다.
Unix 에서 저장시 4 byte floating point 로 했다는데요
델파이에서 파일을 Byte 단위로 쪼게서 4Byte를 Hex 값으로 왔는데
'BF1B2563'이 나오네요..이걸 10진수로 변경해보면 '-1088739997'
이 나옵니다 어떻게 된건지 T_T ( -0.606039 가 안나오고??? )
Hex로 가져올때 잘못한건지 --. 썬쏠라리스 기종이라 'BF1B2563' 을 '2563BF1B'로 뒤집어 봐도..안되요..
Hex 가져오는것은
for i := 1 to 4 do
begin
Read(sFile,sr);
sTemp := sTemp + IntToHex(sr,2);
end;
Hex -> 10진수로
예1)
s : int64;
begin
Edit1.Text := 'BF1B2563'
s := StrToInt('$' + Edit1.Text);
Label3.Caption := IntToStr(s);
end;
예2)
Edit1.Text := 'BF1B2563'
Edit2.Text := Format('%d', [StrToInt('$' + Edit1.Text)]);
조언을 부탁드립니다.
델파이의 Single형과 같네요... 아래와 같이 변형하세요...
procedure TForm1.Button1Click(Sender: TObject);
var
Str: string;
FloatData: Single;
HexValue: Integer;
begin
Str := '$BF1B2563';
HexValue := StrToInt(Str);
Move(HexValue, FloatData, SizeOf(HexValue));
ShowMessage( FloatToStr(FloatData) );
end;
^^ 항상 즐코하세요...