Я пишу программу, которая создает форматы цветов 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
Я полагаю, прошло много времени с этого класса числовых вычислений!