Python - String
Python 2.6Jeg har følgende streng:
010110101101100101101101 (der repræsenterer 24 bits)
Som jeg indlæser fra en fil og som jeg så skal have opdelt i 3 værdier. De første 4 bits, de næste 16 bits og endeligt de sidste 4 bits. Alle skal udskrives som hex værdier. Koden er:
myFile = '/run/shm/rfintxt'
if os.path.exists(myFile):
with open(myFile,'r') as f:
for line in f:
myHead = hex(int(line[0:4],2))
myID = hex(int(line[4:16],2))
myCMD = hex(int(line[20:4],2))
senere printer jeg ud med:
print 'line = %s' % (line)
print 'myContrast = %d' % (myContrast)
print 'myHead = %s' % (myHead)
print 'myID = %s' % (myID)
print 'myCMD = %s' % (myCMD)
myHead viser 0x5 (korrekt)
myID viser 0xad9 (skulle være 0xad96)
For myCMD får jeg fejlen:
myCMD = hex(int(line[20:4],2))
ValueError: invalid literal for int() with base 2: ''
Hvis jeg ændrer myCMD = hex(int(line[20:4],2)) til myCMD = line[20:4] får jeg kun en tom string. Det gør jeg også hvis jeg ændrer til line[8:4] eller andet.
Hvorfor ?
(P.S. Jeg har aldrig før brugt Python så det er sandsynligvis en rigtig dum fejl .........)