AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

PHP to Delphi: pack() / unpack();

Ein Thema von xSkaschY · begonnen am 17. Okt 2009 · letzter Beitrag vom 18. Okt 2009
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#11

Re: PHP to Delphi: pack() / unpack();

  Alt 18. Okt 2009, 01:43
Mh, auf der Dokumentations-Seite steht:

Zitat:
Unless otherwise noted, all values are little-endian
Da das Wort Endian im gesamten Dokument nicht weiter erwähnt wude, sind also Angaben litte Endian. Dein unpack-String ("nvCCCCv") enthält allerdings eine Mischung aus Big und Little Endian. "n" ist Big Endian, daher also glaube ich falsch. "C" hat eigenartiger Weise keine Endianness, was mich gerade ziemlich verwirrt.

Hast du die empfangenen Daten mal ausgewertet? Welche davon sind denn realtistisch ( = wahrscheinlich richtig)?

Liebe Grüße,
Valle
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#12

Re: PHP to Delphi: pack() / unpack();

  Alt 18. Okt 2009, 01:52
C dürfte ein Byte sein, also wäre das Endianness dort wohl auch egal
$2B or not $2B
  Mit Zitat antworten Zitat
xSkaschY

Registriert seit: 19. Jun 2006
Ort: Bünde
95 Beiträge
 
Delphi 2007 Professional
 
#13

Re: PHP to Delphi: pack() / unpack();

  Alt 18. Okt 2009, 02:00
Naja. Das problem ist, das Protocol reagiert nicht auf falsche Daten. Sprich ich bekomme nichts zurück.

Habe gerade mal etwas gegoogelt und bin auf folgendes gestoßen:

Delphi-Quellcode:
function ChangeEndian16(X: WORD): WORD; register; //oder auch Swap
asm
  xchg AL, AH
end;

Nunja, es kommt dem Resultat schon recht nähe, jedoch schrumpft der Binary String nun um 2 Bytes, was auch wieder nicht stimmen kann, weil es 31 Byte sein "müssen".

Wobei der Wert dann nicht mehr passt.

Beispiel:

["wHash"] => WORD(65535)

wird dann zu

["wHash"] => WORD(13642)


"65535" ist aber korrekt. (0x4A 0x35)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#14

Re: PHP to Delphi: pack() / unpack();

  Alt 18. Okt 2009, 02:36
Kan mir mal bitte jemand erklären, was man mit der Funktion macht oder wozu man sie braucht? Aus dem PHP Manual werde ich nicht ganz schlau:
Zitat:
Packt die angegebenen Argumente unter Beachtung von format in eine Binär-Zeichenkette.
Und das Beispiel verstehe ich auch nicht:
Code:
<?php
$binaerdaten = pack("nvc*", 0x1234, 0x5678, 65, 66);
?>
Soll ergeben:
Code:
0x12, 0x34, 0x78, 0x56, 0x41, 0x4
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
xSkaschY

Registriert seit: 19. Jun 2006
Ort: Bünde
95 Beiträge
 
Delphi 2007 Professional
 
#15

Re: PHP to Delphi: pack() / unpack();

  Alt 18. Okt 2009, 02:41
Die Funktion packt alle möglichen Daten in ein Binary String.

Sprich, word, byte, string, integer usw to Binary unter berücksichtigung verschiedener "pack-formate".
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#16

Re: PHP to Delphi: pack() / unpack();

  Alt 18. Okt 2009, 02:42
du gibst der Funktion z.B. einzelne Variablen/Konstanten

und die Funktion macht daraus einen Binärstrom

#$12#$34#$78#$56#$41#$4

[edit]
zwei Dumme - ein Gedanke
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#17

Re: PHP to Delphi: pack() / unpack();

  Alt 18. Okt 2009, 02:46


Hm, und wann braucht man so was?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
xSkaschY

Registriert seit: 19. Jun 2006
Ort: Bünde
95 Beiträge
 
Delphi 2007 Professional
 
#18

Re: PHP to Delphi: pack() / unpack();

  Alt 18. Okt 2009, 02:52
Wenn man zum Beispiel, wie in meinem Fall, eine Anfrage per UDP Sockets an einen Server schickt und bestimmte Daten auswerten möchte.
  Mit Zitat antworten Zitat
Benutzerbild von wicht
wicht

Registriert seit: 15. Jan 2006
Ort: Das schöne Enger nahe Bielefeld
809 Beiträge
 
Delphi XE Professional
 
#19

Re: PHP to Delphi: pack() / unpack();

  Alt 18. Okt 2009, 02:54
Ich habe es z.B. mal benutzt, um mit einem HTTP-Request zwei Dateien abzuholen. Erst die beiden Integers für die Länge an den Anfang schreiben und dann die beiden Dateien.

Doofer roter Kasten. Aber mein Mitteilungsbedürfnis zwingt mich zu posten...
http://streamwriter.org

"I make hits. Not the public. I tell the DJ’s what to play. Understand?"
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#20

Re: PHP to Delphi: pack() / unpack();

  Alt 18. Okt 2009, 02:57
Wohl wieder eine dieser Funktionen, die einem nicht einfällt, wenn man sie braucht.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz