phpbar.de logo

Mailinglisten-Archive

[php] little endian encoding ?

[php] little endian encoding ?

Anton Funk anton.funk at major-new-media.de
Die Nov 25 22:19:52 CET 2003


Hallo Bastian,
das LeC habe ich nur mal hingeschrieben (war meine definition von little
endian encoding)
die funktion die du hier geschrieben hast gibts in PHP leider schon :o) .
http://de3.php.net/manual/de/function.dechex.php

Also ich brauche eine funktion die mir auf 32Bit ebene (little endian
encoding) alles ausgibt (sieh unten das beispiel)

Little endian : "Bezeichnet eine Anordnung der Bytes nach unterschiedlichen
Systemen bei unterschiedlichen Computerarchitekturen. Bei little-endian hat
das am wenigsten signifikante Byte die niedrigste Adresse (little end
first)."

Das heisst wenn wir eine Zahl z.b.:   [fa ea 00 00] haben wird in little
endian [ea fa 00 00] draus
Und diese logik möchte ich darstellen (aus einer dezimalen zahl)

d.H. der erste schritt ist die dezimal zahl in Hex umzuwandeln ....
nehmen wir doch mal die Zahl
1234
$Zahl = 1234 ;
$Hex = dechex ($Zahl) ;  // Ergebniss 4D2

So nun taucht das Problem auf.... ich will diese Zahl erst mal in 32 Bit (4
Byte) angezeigt haben ---> 45 02 00 00
Und dann in little endian codieren ---> 02 45 00 00






----- Original Message ----- 
From: "Bastian Haustein" <phpug at haustein.plan-i.de>
To: "deutschsprachige PHP-Mailingliste" <php at phpbar.de>
Sent: Tuesday, November 25, 2003 9:17 PM
Subject: Re: [php] little endian encoding ?


> Hallo Anton!
>
> > Diese muss 32bit (also 4 Byte) little endian (LeC) hex (Hex) codiert
> werden
>
> LeC kenn ich leider nicht, aber hex sollte einfach sein:
>
> function dec2hex($inp){
>     while($input>0) {
>         $tmp = $inp%16; // Ich hoffe, dass % in PHP auch der
Modula-Operator
> ist?
>         $inp -=$tmp;
>         if($tmp<10)  $ret = $tmp.$ret;
>         if($tmp==10) $ret = 'A'.$ret;
>         if($tmp==11) $ret = 'B'.$ret;
>         if($tmp==12) $ret = 'C'.$ret;
>         if($tmp==13) $ret = 'D'.$ret;
>         if($tmp==14) $ret = 'E'.$ret;
>         if($tmp==15) $ret = 'F'.$ret;
>     }
>     return $ret;
> }
>
> Ungetestet, kann sein, dass du da noch was korigieren mußt, aber
vielleicht
> läufts ja auf anhieb ;-) Wenn LeC so ähnlich wie Hex funktioniert kannst
du
> ja evtl. genauso vorgehen?
>
> Grüße!
>
> Bastian!
>
> PS.: Falls Du den Modula-Operator nicht kennen solltest: er gibt dir den
> "Rest" beim Teilen durch die Zahl hinter dem Operator zurück, also 17%16 =
1
> oder 18%16=2 oder 32%16=0 oder 33%16=1 oder 48%16=0 oder 21%7=0 oder
22%7=1
> etc.
>
> -- 
> ** Allgemeine deutschsprachige PHP-Liste: php at phpbar.de **
> Informationen: http://www.phpbar.de
> http://lists.phpbar.de/mailman/listinfo/php


php::bar PHP Wiki   -   Listenarchive