Найти - Пользователи
Полная версия: Преобразование типов
Начало » Центр помощи » Преобразование типов
1
GeoL
Есть бинарный файл 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
ziro
Посмотрите на стандартный модуль struct - http://docs.python.org/release/3.1.3/library/struct.html - особенно на функцию unpack.
GeoL
Спасибо. Это работает.
from struct import *

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

вывод:
>>>
(15,)
>>>
s0rg
GeoL
Похоже на кортеж.
Это но и есть и вы его создаете сами:
Date_=(unpack ('b ',Date_))
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB