python pack de 4 octets entier avec des octets dans bytearray struct.pack

Je suis d'essayer d'emballer le contenu d'un python bytearray dans un 4byte entier signé à l'aide struct.pack. Malheureusement, pack veut une chaîne de caractères, donc après quelques recherches sur google j'ai pensé que j'avais besoin de décoder mon bytearray à une chaîne. J'ai pensé ascii signifiait depuis en raison d'un caractère ascii est un octet de long. Malheureusement, ascii ne veulent pas soutenir mes valeurs > 127, j'ai donc pensé que je pourrais utiliser le remplacer...

mais quand je fais cette décoder retourne un objet de type unicode et maintenant, chacun de mes octets est un 4 chaîne de caractères...

Cela semble un peu ridicule, im manque quelque chose d'évident (ps j'ai été à l'aide de python pour environ deux semaines)

voici ce que je suis en train de faire...

    val = long(-5) 
s = bytearray(pack("<i", val)) 

s.pop() # pop off msb

# write it out the way we want to then read it in the way the code does
fout = open("test.bat", "wb")
fout.write(s) 
fout.close()

fin = open("test.bat", "rb") 

inBytes = bytearray(fin.read(3))
# extend sign bit
if (inBytes[2] & 0x80):
    inBytes.append(0xff)
else:
    inBytes.append(0x00)

nb = inBytes.decode('ascii', 'replace')
# ERROR:root:after decode, len: 4 type: <type 'unicode'>
logging.error("after decode, len: {0} type: {1}".format(len(nb), type(nb)))

# struct.error: unpack requires a string argument of length 4 
inInt32 = unpack('<i', inBytes.decode('ascii', 'replace'))[0]

fin.close()
InformationsquelleAutor mike | 2011-05-20