lese ich über eine Bibliothek (github.com/adduc/phpmodbus) und es gibt diese Funktion integer zu Little-Endian oder Big-Endian-Byte-String für die Umwandlung:Ist diese Endianness-Konvertierung korrekt?
private static function endianness($value, $endianness = 0) {
if ($endianness == 0)
return
self::iecBYTE(($value >> 8) & 0x000000FF) .
self::iecBYTE(($value & 0x000000FF)) .
self::iecBYTE(($value >> 24) & 0x000000FF) .
self::iecBYTE(($value >> 16) & 0x000000FF);
else
return
self::iecBYTE(($value >> 24) & 0x000000FF) .
self::iecBYTE(($value >> 16) & 0x000000FF) .
self::iecBYTE(($value >> 8) & 0x000000FF) .
self::iecBYTE(($value & 0x000000FF));
}
Die iecBYTE
Funktion nur chr($value & 0xFF)
ist.
Jetzt bin ich vielleicht dick, aber die Little-Endian-Saite sieht falsch aus.
Zum Beispiel mit 0xAABBCCDD
, erhalten Sie {CC}{DD}{AA}{BB}
.
Ich schaute sogar auf Wikipedia nach. Sollte es nicht {DD}{CC}{BB}{AA}
sein?
Der Code funktioniert obwohl, was mich wirklich verwirrt. Ist es richtig und ich verstehe es falsch?
Was meinst du damit funktioniert? Könnte es vielleicht "funktionieren", aber nicht richtig funktionieren? – imtheman
Vielleicht habe ich falsch verstanden, was die Methode macht, nicht sicher. Die Methode wird in der Bibliothek häufig verwendet und funktioniert ordnungsgemäß. – MightyPork