реклама на сайте
подробности

 
 
> Как разобрать float на байты в pythone, Или подскажите алгоритм на С
mempfis_
сообщение Feb 20 2009, 12:32
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409



Добрый день.
Стоит задача разобрать float-число на байты и выполнить побайтную пересылку с помощью gprs-модема.
Задача осложнена тем что пишу на python-е и стандартный модуль struct, способный выполнить эту задачу, модемом не поддерживается.

Поэтому прошу помочь алгоритмом преобразования строки содержащей float-число в 4 байта этого самого float-числа.

Т.е. параметр будет строка вида '0012.5000' а результат 11000001 01001000 00000000 00000000b = C1 48 00 00h

Саму строку легко могу разбить на отдельные числа. А вот собрать с них float проблематично.
Подскажите пожалуйста где об этом можно почитать, может быть есть готовые алгоритмы на С (т.к. сомневаюсь что они есть на pythone)
Заранее спасибо за помощь smile.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Палыч
сообщение Feb 20 2009, 13:34
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(mempfis_ @ Feb 20 2009, 15:32) *
может быть есть готовые алгоритмы на С

Сомневаюсь, что для такой задачи требуется некий алгоритм... Процедура преобразования будет иметь, примерно, такой вид
Код
void Convert(char *Str, void *pCh)
{
   float F;
   sscanf(Str, "%f", &F);
   *(float *)pCh= F;
}


Вызов этой процедуры будет, приметно, такой
Код
  unsigned char mCh[4];
   ......
   Convert("0012.5000", mCh);


PS. Можно процедуру записать ещё проще
Код
void Convert(char *Str, void *pCh)
{
    sscanf(Str, "%f", pCh);
}
Поскольку внутренность процедуры сократилась до одной строки - её можно совсем сократить
Код
  unsigned char mCh[4];
   ......
   sscanf("0012.5000", "%f", mCh);
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 31st July 2025 - 02:01
Рейтинг@Mail.ru


Страница сгенерированна за 0.01365 секунд с 7
ELECTRONIX ©2004-2016