Недавно я работал над системой, которая должна хранить и загружать большие объемы данных, включая значения с плавающей запятой одинарной точности. Я решил стандартизировать сетевой порядок байтов для целых чисел, а также решил хранить значения с плавающей запятой в формате с обратным порядком байтов, то есть:
|-- Byte 0 --| |-- Byte 1 -| Byte 2 Byte 3
# ####### # ####### ######## ########
Sign Exponent Mantissa
1b 8b, MSB first 23b, MSB first
В идеале я хочу предоставить такие функции, как htonl()
и . ] ntohl()
, так как я уже использовал их для выборки целых чисел, и я также хочу реализовать это таким образом, чтобы обеспечить максимальную независимость от платформы (предполагая, что float
тип соответствует 32-битным значениям с плавающей запятой IEEE754). Есть ли способ, возможно, с помощью ieee754.h
сделать это?
У меня есть один ответ, который кажетсярабочим, и я опубликую его ниже, но он кажется довольно медленным и неэффективным, и я был бы признателен за любые предложения о том, как сделать его быстрее и/или более надежным.