Как преобразовать число с плавающей точкой в ​​нестандартную кодировку

Я пишу программу, которая создает форматы цветов ICC. Эти форматы определяют тип данных с именем s15Fixed16Number, который имеет знаковый бит, 15 целочисленных битов и 16 дробных битов. IEEE 754 32-разрядные числа с плавающей запятой имеют знаковый бит, 8 экспоненциальных бит и 23 дробных бита.

Мне нужно получить входные данные из текстового поля и преобразовать их в s15Fixed16Number. Некоторый поиск обнаружил этот в книгах Google, но это говорит о преобразовании десятичного числа в s15Fixed16Number. Я полагаю, я мог бы просто использовать метод, описанный в ссылке, но я не Я провел еще какие-либо испытания, чтобы определить, насколько точным это будет. Полагаю, я мог бы также попытаться преобразовать ввод символов из текстового поля, но я об этом еще особо не задумывался.

Я использую Какао, но не думаю, что это имеет значение; любая функция C должна работать. Вот некоторые примерные значения в формате s15Fixed16Number:

              -32768.0 = 0x80000000
                     0 = 0x00000000
                   1.0 = 0x00010000
 32767 + (65535/65536) = 0x7FFFFFFF

Я полагаю, прошло много времени с этого класса числовых вычислений!

6
задан Jonathan Leffler 30 August 2010 в 04:44
поделиться