Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/25: Рейтинг темы: голосов - 25, средняя оценка - 4.52
 Аватар для kristow
0 / 0 / 2
Регистрация: 27.11.2013
Сообщений: 78

Bytes to int или float должно получиться

15.06.2020, 12:26. Показов 5176. Ответов 7

Студворк — интернет-сервис помощи студентам
Есть протокол обмена устройства, но на него нет документации по протоколу обмена.

У меня приходят байты, не могу понять что как их преобразовать в int или float.
Прога выводит число с запятой, но исходя из других данных этого же прибора, там я получал целое число, и потом уже смещал запятую... А тут не пойму что за секрет приведения к числу реализован. Помогите плиз!!!

Вот примеры:

hex | Должно получиться
47A5 | 75.07
4B13 | 75.20
4B32 | 79.05
0EFF | 12.64
0CA3 | 13.38
0D60 | 27.44

Пробовал менять местами байты, добавлять нулевые байты, но так и не получается привести к нормальному виду...
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.06.2020, 12:26
Ответы с готовыми решениями:

ОШИБКА [Error] cannot convert 'int*' to 'float*' for argument '1' to 'void Syma(float*,int*,int)
Какая то проблема с указателями,незнаю,не хочет щитать суму парних чисел в второй подпрограме.Извиниет за ошибки.Не владею руским.Помогите...

Float в int или double в int
Надо прибавить в Shape1->Top+=0,33, но когда перевожу в int то он округляет до нуля, чего быть не должно, как это реализовать?

При вводе элементов массива выводить их тип (или int или float)
Помогите с ошибкой, и если не сложно то с заданием а то я вроде сделал только не могу проверить так как крешит прогу( А задание...

7
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5972 / 3734 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
15.06.2020, 13:51
А фиг знает:
Python
1
2
3
4
>>> struct.unpack('>H', b'\x47\xa5')
(18341,)
>>> struct.unpack('>H', b'\x4b\x13')
(19219,)
Добавлено через 3 минуты
Вообще не похоже на линейную зависимость: https://www.wolframalpha.com/i... 3B75.20%29
0
 Аватар для kristow
0 / 0 / 2
Регистрация: 27.11.2013
Сообщений: 78
15.06.2020, 14:03  [ТС]
Вот еще пример:
Python
1
[0x3B, 0xF1, 0x30, 0x39]
Должно получиться два числа 59,941 и 48,223.
Методом тыка, вроде как 0x3B = 59, а 0x30 = 48 - Это наверное мы получаем первую часть числа… А что сделать, чтобы получить вторую часть не пойму…
0
Модератор
Эксперт Python
 Аватар для Fudthhh
2695 / 1601 / 513
Регистрация: 21.02.2017
Сообщений: 4,210
Записей в блоге: 1
15.06.2020, 14:19
kristow, первые 8 бит это целое, остальные 8 бит это мантиса.
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5972 / 3734 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
15.06.2020, 14:23
Python
1
2
3
4
5
6
Раз так, то просто:
>>> a1, a2, b1, b2 = struct.unpack('BBBB', b'\x3b\xf1\x30\x39')
>>> a = f'{a1}.{int(a2*3.9)}'
>>> b = f'{b1}.{int(b2*3.9)}'
>>> a, b
('59.939', '48.222')
1
Модератор
Эксперт Python
 Аватар для Fudthhh
2695 / 1601 / 513
Регистрация: 21.02.2017
Сообщений: 4,210
Записей в блоге: 1
15.06.2020, 14:48
Лучший ответ Сообщение было отмечено kristow как решение

Решение

kristow,

Ты в первом примере явно напутал:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
examples = [
    b"\x47\xA5", b"\x4B\x13", b"\x4B\x32", b"\x0E\xFF",
    b"\x0C\xA3", b"\x0D\x60", b"\x3B\xF1", b"\x30\x39"
]
 
for example in examples:
    number, value = 0, int.from_bytes(example, 'big')
    for i, bit in enumerate(f"{value:016b}"):
        number += int(bit) * 2**(7 - i)
    print(f"PAYLOAD: {example.hex()}, NUMBER: {number:.3f}")
 
# PAYLOAD: 47a5, NUMBER: 71.645
# PAYLOAD: 4b13, NUMBER: 75.074
# PAYLOAD: 4b32, NUMBER: 75.195
# PAYLOAD: 0eff, NUMBER: 14.996
# PAYLOAD: 0ca3, NUMBER: 12.637
# PAYLOAD: 0d60, NUMBER: 13.375
# PAYLOAD: 3bf1, NUMBER: 59.941
# PAYLOAD: 3039, NUMBER: 48.223
1
 Аватар для kristow
0 / 0 / 2
Регистрация: 27.11.2013
Сообщений: 78
15.06.2020, 15:12  [ТС]
Вау!
Спасибо DmFat, решение работает !!!
0
 Аватар для kristow
0 / 0 / 2
Регистрация: 27.11.2013
Сообщений: 78
16.06.2020, 14:38  [ТС]
Добрый день.
Решил не плодить новую тему.

Тоже самое, из hex привести к float.
Пробовал методом выше, не работает...
Python
1
struct.unpack('f', val) - тоже не дает нужные данные...
Помогите пожалуйста правильным методом приведения!

Вот примеры:
Python
1
2
3
4
5
 
Байты = Результат
[ 0x46, 0xF2, 0x2A, 0x00, 0x00, 0x00, 0x00, 0x00 ] = 60,541
[ 0x46, 0xF1, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x00 ] = 60,402
[ 0x46, 0xF1, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00 ] = 60,352
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.06.2020, 14:38
Помогаю со студенческими работами здесь

int или float
здрасьти, p=p*6; каким должен быть тип у p? int или float? или без разницы?

Должно все получиться?
Доброе время суток!) мне 23 закончил гуманитарий, c детства мечтал стать программистом но так как у меня было очень туго с матиматекой...

В csv из str в int или float
Друзья, помогите, пожалуйста, разобраться. Никак не могу сообразить, как преобразовать значение из файла csv из str в float. import...

Преобразовать byte[] в float или int
Имеется массив типа byte, необходимое мне значение занимает 2 байта, нужно эти 2 байта переконвертировать либо в float либо int. Каким...

Расшифровать: 06 38 71 A2 D2 09 3C должно получиться шестизначное число
не силён в математике... даже не знаю в какую тему это вставить но...может поможете расшифровать: 06 38 71 A2 D2 09 3C должно получиться...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru