Я читаю через библиотеку (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