Hex() возвращает некорректное число, если скормить ему целое, которое было получено в результате взаимодействия дробных чисел,
пример бага:
P.S. Этот баг выводил меня весь день, код работал с памятью и очень трудно было отладить его, даже не думал, что такая простая функция может работать неправильно :\
пример бага:
Код:
$byte_pos = 2
MsgBox('', '', Hex($byte_pos, 16)) ; 00 00 00 00 00 00 00 02
$byte_pos = 1.5 + 0.5
MsgBox('', '', Hex($byte_pos, 16)) ; 40 00 00 00 00 00 00 00
$byte_pos = 2.5 - 0.5
MsgBox('', '', Hex($byte_pos, 16)) ; 40 00 00 00 00 00 00 00
$byte_pos = 4 ^ 0.5
MsgBox('', '', Hex($byte_pos, 16)) ; 40 00 00 00 00 00 00 00
$byte_pos = 4 * 0.5
MsgBox('', '', Hex($byte_pos, 16)) ; 40 00 00 00 00 00 00 00
$byte_pos = 4 / 2
MsgBox('', '', Hex($byte_pos, 16)) ; 40 00 00 00 00 00 00 00
$byte_pos = 4 / 2 + 0
MsgBox('', '', Hex($byte_pos, 16)) ; 40 00 00 00 00 00 00 00
P.S. Этот баг выводил меня весь день, код работал с памятью и очень трудно было отладить его, даже не думал, что такая простая функция может работать неправильно :\