Skip to content

Data loss when converting numbers #20308

@aub2000

Description

@aub2000

From manual page: https://php.net/function.gmp-export

Original text

Потеря данных при преобразования чисел

Функция gmp_export() должна выдавать в качестве результата бинарную строку длина которой указывается во втором параметре. Но при преобразовании нуля "0" функция возвращает в качестве результата пустую строку длиной 0 байт независимо от значения второго параметра. Такое поведение функции недопустимо так как приводит к фактической потере данных при преобразовании и делает невозможным их восстановление.
Применяя функцию gmp_export() для упаковки числа в бинарный формат программист надеется на адекватное воспроизведение исходного числа из бинарной строки при использовании функции gmp_import(), но в данном случае эта логика нарушается.
Программисты «благодаря» этой несуразности, должны писать в своих программах костыли для парирования этой ситуации.
Прошу привести работу функции к естественному порядку.

The gmp_export() function should return a binary string whose length is specified in the second parameter. However, when converting zero "0," the function returns an empty string of 0 bytes as a result, regardless of the value of the second parameter. This behavior is unacceptable, as it leads to actual data loss during conversion and makes it impossible to recover.
When using the gmp_export() function to pack a number into binary format, the programmer hopes for an adequate reproduction of the original number from the binary string when using the gmp_import() function, but in this case, this logic is violated.
Due to this inconsistency, programmers are forced to write workarounds in their programs to handle this situation.
I request that the function's operation be brought back to its natural order.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions