2013-06-17 5 views
1


Я пишу код для сбора данных для своего оборудования.Преобразуйте символ в double

Однако мне нужно найти среднее значение данных, которые я собрал.

Вот проблема, полученные данные находятся в формате unsigned char, и мне нужно преобразовать его в формат double. Кроме того, собранные данные экспоненциальны [1.789232E-05].

Есть ли какой-либо возможный способ преобразования unsigned char в double, а затем снова?

У меня есть double j и unsigned char a[200]
Беззнаковый знак состоит из 1.789232E-05. Как преобразовать эти данные в двойные?

Спасибо!

+0

Является ли «1.789232E-05' примером? В этом случае это не «unsigned char», это строка. Возможно, вам захочется прочитать вопрос «Confused, как преобразовать из строки в double, используя strtod() в C++» [http://stackoverflow.com/q/5687269/139746] –

+0

Что такое экспоненциальный символ? oO – riv

+0

Или этот вопрос: http://stackoverflow.com/questions/1710447/string-in-scientific-notation-c-to-double-conversion – ThePragmatist

ответ

3

Вы можете попытаться использовать atof для преобразования из char в double, так как для представления двойного символа я предлагаю вам использовать char * для хранения преобразованного двойника.

Ссылка на atof из MSDN: http://msdn.microsoft.com/en-us/library/hc25t012%28v=vs.71%29.aspx

+0

Есть ли какой-нибудь пример того, как я использую этот метод преобразования? Я мог бы оказать большую помощь, если вы покажете мне кое-что. :) – Ashton

+0

Вы посмотрели ссылку? Вы должны взглянуть на ссылку. –

+0

Просто небольшое примечание. Если вы программируете для Microsoft, используйте версию TCHAR '_tstof'. Таким образом, он будет автоматически преобразован в UNICODE, если вы скомпилируете для unicode. Фактически это относится ко всем функциям строки C: всегда смотрите '_t' версию функций C – cha

0

"Экспоненциальная форма" не что-то конкретное в виду. Если данные находятся на 8 бит, это, вероятно, в формате G.711, либо A-Law, либо μ-Law. В зависимости от того, какой из них, вам придется использовать другую процедуру преобразования . (В обоих случаях формат 8 бит равен 1 бит знак, 3 бита и 4 бита мантиссы.)

+0

С примером «1.789232E-05» для примера в вопросе OP, я думаю, что есть более 4 бит мантиссы. –

+0

@MrLister Да. Его вопрос действительно не очень ясен. Однако, какие другие «экспоненциальные форматы» вы знаете, которые подходят для одного байта? (Форматы G.711 вообще не имеют отрицательных экспонентов, поскольку они конвертируют 13 или 14 битных целых чисел в 8-битный экспоненциальный формат с потерей точности.) –

Смежные вопросы