Teil von SELFHTML Forum Teil von SELFHTML Forumsarchiv Teil von 2010 Teil von Januar

SELFHTML Forumsarchiv
Real/Float in Hex/Dez wandeln

Informationsseite
  1. Seite (PERL) Real/Float in Hex/Dez wandeln von roger, 29. 01. 2010, 08:58
nach unten

Real/Float in Hex/Dez wandeln

Die folgende Nachricht zum Thema stammt von: roger, 29. 01. 2010, 08:58

Hallo,

ich möchte von einer "Kommazahl" welche aus Basis und Mantisse besteht,
den eigentlichen Dezimalwert erzeugen. Den Wert der tatsächlich in der Speicherstelle steht.

Mit C schreibe ich in eine Float Variable und lese die Adresse in Long aus.
Wie könnte ich es in Perl realisieren.

    Gruß
     roger

nach obennach unten

Real/Float in Hex/Dez wandeln

Die folgende Nachricht zum Thema stammt von: Beat, 29. 01. 2010, 09:11

»» ich möchte von einer "Kommazahl" welche aus Basis und Mantisse besteht,

Du möchtest eine Zahl. die du im programmtext als 1.4e-17 angegeben hast

»» den eigentlichen Dezimalwert erzeugen. Den Wert der tatsächlich in der Speicherstelle steht.
»» Mit C schreibe ich in eine Float Variable und lese die Adresse in Long aus.
»» Wie könnte ich es in Perl realisieren.

Alles was ich von dir verstehe, gemahnt mich an dies:
sprintf("%.12f",1.474238e-3)

mfg Beat
--
><o(((°>           ><o(((°>
   <°)))o><                     ><o(((°>o
Der Valigator leibt diese Fische

nach obennach unten

Real/Float in Hex/Dez wandeln

Die folgende Nachricht zum Thema stammt von: roger, 29. 01. 2010, 09:33

Morgen Beat,

nicht ganz.

z.B.

Float ist ja nur ein Format wie die Zahl dargestellt wird. In Wirklichkeit steht in der Ram Speicherzelle ja keine Kommazahl sondern eine Ganzzahl.
Genau diese Ganzzahl möchte ich haben.

z.B.

Float 123.4 => Long 112347541 (das steht in der Speicherzelle.. in Binär)
Float 0.1 => Long 1036831949
Float 10.0 => Long 1092616192


    Gruß
     roger

nach obennach unten

Real/Float in Hex/Dez wandeln

Die folgende Nachricht zum Thema stammt von: Christian Kruse, 29. 01. 2010, 10:18

你好 roger,

»» Float ist ja nur ein Format wie die Zahl dargestellt wird. In Wirklichkeit steht in der Ram Speicherzelle ja keine Kommazahl sondern eine Ganzzahl.
»» Genau diese Ganzzahl möchte ich haben.
»»
»» z.B.
»»
»» Float 123.4 => Long 112347541 (das steht in der Speicherzelle.. in Binär)
»» Float 0.1 => Long 1036831949
»» Float 10.0 => Long 1092616192

Naja, pack/unpack:


print unpack("i",pack("f",.1)),"\n";



再见,
 克里斯蒂安

--
http://wwwtech.de/
Unsere Vorstellungen von der Ewigkeit sind genauso nuetlich wie die Mutmassungen eines Kuekens ueber die Aussenwelt bevor es die Eierschale aufbricht.
Kompromisse und andere WiderlichkeitenHochzeit mit Flitterwochen

nach obennach unten

Real/Float in Hex/Dez wandeln

Die folgende Nachricht zum Thema stammt von: Struppi, 29. 01. 2010, 10:23

»» Naja, pack/unpack:

ok, damit stehe ich auf Kriegsfuss.

Struppi.

nach obennach unten

Real/Float in Hex/Dez wandeln

Die folgende Nachricht zum Thema stammt von: Christian Kruse, 29. 01. 2010, 10:55

你好 Struppi,

»» »» Naja, pack/unpack:
»»
»» ok, damit stehe ich auf Kriegsfuss.

Pack gibt dir die binäre Repräsentation eines Datums, unpack wandelt es wieder in einen Perl-Datentyp um. Mehr steckt da eigentlich nicht hinter.

Du kommst ja so ohne weiteres gar nicht an die binäre Repräsentation bei dem Abstraktionsgrad.

再见,
 克里斯蒂安

--
http://wwwtech.de/
1 + 1 = 3 für gosse Werte von 1.
Kompromisse und andere WiderlichkeitenHochzeit mit Flitterwochen

nach obennach unten

Real/Float in Hex/Dez wandeln

Die folgende Nachricht zum Thema stammt von: roger, 29. 01. 2010, 11:03

Hallo,

danke meine Herrn... ganz einfach. Auf die Idee mit pack/unpack
wäre ich nicht gekommen.

   Gruß
     roger

nach obennach unten

Real/Float in Hex/Dez wandeln

Die folgende Nachricht zum Thema stammt von: hotti, 30. 01. 2010, 18:30

 Hallo,
»»
»» danke meine Herrn... ganz einfach. Auf die Idee mit pack/unpack
»» wäre ich nicht gekommen.

Und ich hab nochne Idee, betr. Socket und Deinem c-Programm:

Trenne konsequent Handle und Darstellung. D.h., Dein c-Program schreibt nur einen Bitstream in das socket, allenfalls ein unescaped Hexmap.

HexMap mit Escape

Bitstream ist zu bevorzugen, dafür ist ein socket auch gedacht. Alle Zeitserver schicken z.B. Binaries. Hexmap braucht doppelt soviel Bandbreite, das gilt für alles, was Du auf Darstellungsebene schickst (Zeichen).

Mein Vorschlag: Überlasse die Darstellung dem, der das socket liest, da schreibst Du Dein c-Programm nur einmal und bist flexibel.

Hotti

nach obennach unten

Real/Float in Hex/Dez wandeln

Die folgende Nachricht zum Thema stammt von: hotti, 29. 01. 2010, 13:35

»» »» Naja, pack/unpack:
»»
»» ok, damit stehe ich auf Kriegsfuss.

Na, dann pack() das mal an ;-)

Hotti
--
Wenn Du Deine Feinde nicht lieben kannst, lerne sie schätzen.

nach obennach unten

Real/Float in Hex/Dez wandeln

Die folgende Nachricht zum Thema stammt von: Struppi, 29. 01. 2010, 10:21

»» Float ist ja nur ein Format wie die Zahl dargestellt wird. In Wirklichkeit steht in der Ram Speicherzelle ja keine Kommazahl sondern eine Ganzzahl.
»» Genau diese Ganzzahl möchte ich haben.

Nein da kommst du nicht dran.

Allerdings kann ich mir vorstellen, dass es unter Devel::____ Module gibt, die auch diese Werte auslesen können.

Struppi.

nach obennach unten

Real/Float in Hex/Dez wandeln

Die folgende Nachricht zum Thema stammt von: Struppi, 29. 01. 2010, 09:25

»» ich möchte von einer "Kommazahl" welche aus Basis und Mantisse besteht,
»» den eigentlichen Dezimalwert erzeugen. Den Wert der tatsächlich in der Speicherstelle steht.

Heißt das, du hast die binäre Umsetzung einer Gleitkommazahl? Also eine Bytefolge?
Dann musst du das irgendwo umrechnen.

»» Mit C schreibe ich in eine Float Variable und lese die Adresse in Long aus.
»» Wie könnte ich es in Perl realisieren.

Nur mit einer entsprechenden Methode.

Struppi.

nach obennach unten

Real/Float in Hex/Dez wandeln

Die folgende Nachricht zum Thema stammt von: hotti, 30. 01. 2010, 00:08

hi,

»» Mit C schreibe ich in eine Float Variable und lese die Adresse in Long aus.
»» Wie könnte ich es in Perl realisieren.

Für Beides und die Aufgabenstellung in Deinem post von vor ein paar Tagen, hätte ich noch eine gänzlich andere Lösung, die ist jedoch nicht so für die Öffentlichkeit bestimmt, bei Interesse schreib mich einfach an.

Rolf
--
Schätzen ist das Gegenteil von Unterschätzen.

nach oben
Teil von SELFHTML Forum Teil von SELFHTML Forumsarchiv Teil von 2010 Teil von Januar

© 1998-2008 Seite Impressum, Software: Classic Forum