2017-01-31 5 views
0

Я пытаюсь добавить временную метку к началу байтового объекта с шестнадцатеричными значениями, однако у меня возникают некоторые проблемы.bytearray (byte object) can not append timestamp

Мой байт obejct (данные), что я хочу, чтобы добавить метку времени к индексу 0, выглядит так:

b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00`\xc2\xf5(\x00\x00\x00\x00x\x00\x00\x00!\xa1\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00x\x00\x00\x00\xf5\x00\x00\x00}\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\x7f\x00\x00\x00\x00\x00\x00\x00\x00\xff\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x98\xe0\x0e\x00 \xa1\x07\x00\xac\r\x00\x00P\xc3\x00\x00o\x12\x83\x00"\x00\x00\x00P\xc3\x00\x00)\\\x8f\x02\xac\x00\x00\x00\xe4\x14\x1d-B\xcff-\x8f\xc2\xf5(\xebQP\xc3(\\\xccLx\x00\x86qd\x00L\x1d}\x00\xf5\x00L\x1d\xb5\x012\x00\x10\'\xcc\x0c\x00\x00\x00\x00\x00\x00l\xe7\xfb)\x00\x00\x00\x00`\xc2\xf5(\xd0\x07\xd0\x07\xfa\x00\xfa\x00\xd0\x07\xd0\x07\x01\x00\x01\x00\xc4\t\xc4\t\xc7\x01\x00\x00\xd0\x07\xee\x02\x8f\xc2\xf5(+\xf6\x97)\xc4\tzT\x05\x02\xb8\x0b\x00\x00\x05\x01\x00\x00\x00\x00\x00\x00\x00\x08<\x0f2\x00\n\x01K\x00\x00\x00\xc4\t\x00\x04\[email protected]\x01\x00\x00\x00' 

Я попытался вставить метку времени, таким образом:

import struct, time 
import numpy as np 
g = bytearray(data) 
time_ = struct.pack("I",int(time.time())) 
g.append(int(time_)) 

Мои ошибка заключается в следующем:

ValueError: неверный буквальным для Int() с базой 10: Ь '\ x11 \ XB2 \ x90X'

Как я могу это сделать?

+0

Вы преобразующий номер к уже байт, так что нет никакой необходимости, чтобы попытаться преобразовать его обратно в номер, но вы должны выяснить, где именно вам 'пытаюсь поставить значение. –

ответ

0
In [878]: g=bytearray([]) 
In [879]: import struct, time 
In [880]: time_ = struct.pack("I",int(time.time())) 
In [881]: time_ 
Out[881]: b'U\xc5\x90X' 

Ошибка продуцируется пытается интерпретировать time_ как целое:

In [886]: int(time_) 
... 
ValueError: invalid literal for int() with base 10: b'U\xc5\x90X' 

Но добавление time_ также не работает, так как он имеет несколько байт:

In [882]: g.append(time_) 
... 
TypeError: an integer is required 
In [883]: g.append? 
Signature: g.append(item, /) 
Docstring: 
Append a single item to the end of the bytearray. 

Но расширяющие не работает:

In [884]: g.extend(time_) 
In [885]: g 
Out[885]: bytearray(b'U\xc5\x90X') 

int(time) представляет собой целое число, которое занимает 4 байта:

In [887]: int(time.time()) 
Out[887]: 1485882974 
In [888]: len(time_) 
Out[888]: 4 

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

  • Нет связанных вопросов^_^