, .
bytearray longs- .
bytearray, .
( str , , )
import struct
b=bytearray(b'\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff')
larray=[]
for i in range(0,len(b),8):
larray.append(struct.unpack('@q',b[i:i+8])[0])
print(larray)
larray[1]=1000
b = bytearray()
for l in larray:
b += struct.pack('@q',l)
print(b)
, ( ints):
def set_long(array,index,value):
index *= 8
if sys.byteorder=="little":
shift=0
for i in range(index,index+8):
array[i] = (value>>shift) & 0xFF
shift += 8
else:
shift = 56
for i in range(index+8,index,-1):
array[i] = (value<<shift) & 0xFF
shift -= 8
def get_long(array,index):
index *= 8
value = 0
if sys.byteorder=="little":
shift=0
for i in range(index,index+8):
c = (array[i]<<shift)
value += c
shift += 8
else:
shift = 56
for i in range(index+8,index,-1):
value += (array[i]>>shift)
shift -= 8
return value
b=bytearray(b'\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff')
print(get_long(b,1)==2**64-1)
set_long(b,1,2001)
print(b)
print(get_long(b,1))
:
bytearray(b'\x00\x00\x00\x00\x00\x00\x00\x00\xe8\x03\x00\x00\x00\x00\x00\x00')
True
bytearray(b'\x00\x00\x00\x00\x00\x00\x00\x00\xd1\x07\x00\x00\x00\x00\x00\x00')
2001