나는 도서관 (github.com/adduc/phpmodbus)를 통해 읽고 있어요 및 바이트 - 리틀 엔디안 또는 빅 엔디안 문자열로 정수를 변환하는이 기능이있다 :엔디안 변환이 맞습니까?
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));
}
iecBYTE
기능은 단지 chr($value & 0xFF)
입니다.
어쩌면 나는 두껍지만 리틀 엔디안 문자열이 잘못되었습니다.
예를 들어 0xAABBCCDD
을 입력하면 {CC}{DD}{AA}{BB}
이 표시됩니다.
나는 심지어 위키 백과에서 그것을 찾았다. {DD}{CC}{BB}{AA}
이 아니어야합니까?
코드 은이지만 실제로 혼란 스럽습니다. 맞습니까? 잘못 이해합니까?
작동한다는 것은 무엇을 의미합니까? 아마도 "일하고"있을 수 있지만 제대로 작동하지 않을 수 있습니까? – imtheman
어쩌면 나는 그 방법이 무엇을하고 있는지 오해했을지도 모릅니다. 이 방법은 라이브러리에서 상당히 많이 사용되며 올바르게 작동합니다. – MightyPork