![]() |
Delphi-Version: 2010
Dezimal zu floating hex 8 byte ?
Ich habe eine Zahl: 1776
diese möchte ich in einer Binärdatei suchen. Finde diese aber nicht wenn ich sie einfach in Hex umwandle F006 Habe nun herausgefunden das die zahlen in der Datei als: Floating Point value, Double 8 byte gespeichert sind, also so: 00 00 00 00 00 C0 9B 40 < dies entspricht also der 1776 Nun frage ich mich, wie ich zahlen in diese Floating Point Value umwandeln kann so das ich sie in der binärdatei finden kann. Weiß das jemand von euch? |
AW: Dezimal zu floating hex 8 byte ?
Delphi-Quellcode:
Ergebnis: 1776.0000000000
type
tda = array[0..7] of byte; const beispiel: tda = ($00,$00,$00,$00,$00,$C0,$9B,$40); var x: double; begin x := double(beispiel); writeln(x:20:10); end. |
AW: Dezimal zu floating hex 8 byte ?
Danke!
Und der umgekehrte weg? |
AW: Dezimal zu floating hex 8 byte ?
Zitat:
Nimm eine Variable (Double) speichere darin deine Zahl und über @variable kommst du an deren binäre Daten. :roll: Records mit varianten Teilen sind auch sehr beliebt. Oder über die Delphi-Syntax:
Delphi-Quellcode:
Egal was man setzt, das andere wird quasi mit verändert.
type
tda = array[0..7] of byte; var x: double; b: tda absolute x; // selben Speicher wie x benutzen b := beispiel; writeln(x:20:10); |
AW: Dezimal zu floating hex 8 byte ?
Zitat:
Delphi-Quellcode:
Ausgabe: 0 0 0 0 0 192 155 64, wenn Du's Hex brauchst, mußt Du halt noch inttohex zwischenschalten.
type
tda = array[0..7] of byte; var x: double; i: integer; begin x := 1776; for i:=0 to 7 do write(tda(x)[i]:4); writeln; end. |
AW: Dezimal zu floating hex 8 byte ?
cool, danke für die schnelle Hilfe!
|
AW: Dezimal zu floating hex 8 byte ?
etwas zu früh gefreut. ich verwende das letzte von gammatester aber in einer prozedur. Beim compilieren kommt da immer "operator oder semikolon fehlt". Leider verstehe ich den code nicht um ihn anzupassen.
Wie müsste den Code sein damit er in einer prozedur funktioniert und das Ergebnis als hex in einem edit feld steht? Danke! |
AW: Dezimal zu floating hex 8 byte ?
Delphi-Quellcode:
var
D: Double; S: string;
Delphi-Quellcode:
ist der Zeiger auf die binären Daten der Variable.
@D
Dazu liest du dir einfach mal ![]()
Delphi-Quellcode:
D := 123.465;
SetLength(S, SizeOf(D) * 2); // zwei Zeichen pro Byte BinToHex(D, PChar(S), SizeOf(D)); // oder BinToHex(@X, PChar(S), SizeOf(X)); Edit1.Text := S; |
AW: Dezimal zu floating hex 8 byte ?
oder nochmals gekapselt:
Delphi-Quellcode:
Function GetAsHexString(Var X;Size:Integer):AnsiString;
begin SetLength(Result,Size*2); BinToHex( x,PAnsiChar(Result),Size); end; procedure TForm2.Button2Click(Sender: TObject); var x:Integer; y:Double; begin x := 255+255*256; Showmessage(GetAsHexString(x,SizeOf(x))); y := 1776; Showmessage(GetAsHexString(y,SizeOf(y))); end; |
AW: Dezimal zu floating hex 8 byte ?
@himitsu super, vielen dank.
Jetzt funktioniert alles :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:09 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz