Я смущен относительно того, как серия байтов превращается в десятичное число.Головная боль от шестнадцатеричного до десятичного числа
Когда я вхожу значение (NSData *) data1 я получаю:
(lldb) po data1
<00000000 207ce340 62706c69 73743030 d4000100 02000300 04000500 0612c012 c1582476 ... ...>
Первые 8 байт должны содержать номер, который кодовые экстракты следующим образом:
memcpy(&doubleNumber, [data1 bytes], sizeof(double));
Как первые 8 байтов (которые, я думаю, 00000000 207ce340
, справа?) Данных1 дают десятичное число ??
Редактировать
Контекст этого вопроса необходимости делать преобразование в PHP: учитывая шестигранной представление, как может один в PHP преобразовать число и получить десятичную (на самом деле это должно быть поплавок) 39905?
Ответ на этот вопрос приведен в одном из комментариев ниже.
Существует целая большая спецификация, которая рассказывает, как число кодируется: https://en.wikipedia.org/wiki/IEEE_floating_point – Sulthan
Знаете ли вы как число кодируется в байтовом потоке (т. е. большой конец или маленький конец)? Знаете ли вы, какой формат 'NSData' печатает его содержимое? Использование 'double' для хранения байта очень необычно, так как вы не можете иметь частичные байты, поэтому вся схема кодирования может быть ошибочной. – trojanfoe
Я вижу ... это намного сложнее, чем я думал. @Sulthan, я не знаю, как использовать документ iEEE Floatation Point. – Sleiman