Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 8, 2011 19:28:47

GeoL
От:
Зарегистрирован: 2011-10-08
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Преобразование типов

Есть бинарный файл pr1.rtm. Необходимо преобразовать хранящиеся в нем байты в целые числа без знака и записать их в новый файл, разделяя их пробелами по четыре числа в строке (для импорта в табличный процессор).

with open("c:\pu3eg\pr1.rtm", "rb") as fb:
for j in (0,1,2,3,):
fbbyte=fb.read(1)
print(fbbyte)
# a=int(fbbyte)
# print(a)
вывод:
>>>
b'\x0f'
b'\x01'
b'\x0b'
b'\x1b'
>>>
Если раскомментировать преобразование
with open("c:\pu3eg\pr1.rtm", "rb") as fb:
for j in (0,1,2,3,):
fbbyte=fb.read(1)
print(fbbyte)
a=int(fbbyte)
print(a)
вывод:
b'\x0f'
Traceback (most recent call last):
File “C:/pu3eg/pr1.py”, line 19, in <module>
a=int(fbbyte)
ValueError: invalid literal for int() with base 10: ‘\x0f’
>>>

В то же время a=int(0x0f) дает нормальный вывод
Не могу понять, в чем туплю :(

Phyton 3.2.2 Win7

P.S. Я не программист. Наладчик.
Пытаюсь освоить простые проги в Phyton.
Файлы регистрации параметров в двоичном формате пишет импортное оборудование. Для вывода в виде графика необходимо импортировать в OOo Calc



Офлайн

#2 Окт. 8, 2011 20:51:21

ziro
От:
Зарегистрирован: 2009-08-13
Сообщения: 225
Репутация: +  8  -
Профиль   Отправить e-mail  

Преобразование типов

Посмотрите на стандартный модуль struct - http://docs.python.org/release/3.1.3/library/struct.html - особенно на функцию unpack.



Офлайн

#3 Окт. 9, 2011 14:17:29

GeoL
От:
Зарегистрирован: 2011-10-08
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Преобразование типов

Спасибо. Это работает.

from struct import *

with open("c:\pu3eg\pr1.rtm", "rb") as fb:
Date_=fb.read(1)
Date_=(unpack ('b ',Date_))
print (Date_)
Но вывод показывает, что преобразавание как бы не в число (что значат круглые скобки и запятая?)
Или это строка из одного числа?
Похоже на кортеж.

вывод:
>>>
(15,)
>>>



Отредактировано (Окт. 9, 2011 14:23:40)

Офлайн

#4 Окт. 9, 2011 16:05:35

s0rg
От:
Зарегистрирован: 2011-06-05
Сообщения: 777
Репутация: +  25  -
Профиль   Отправить e-mail  

Преобразование типов

GeoL
Похоже на кортеж.
Это но и есть и вы его создаете сами:
Date_=(unpack ('b ',Date_))

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version