C
Canned
Hi,
I'm trying to write a class that can convert ascii to binary and vice
versa. I write my class based on this function I've found on internet
That works perfectly, but when I try to implement it in my own class it
gives me alot of headache, also because I'm totally new to the language.
It work only with one character at a time, and if I give a string it
just give some weird result.
The problem start at "Reversing array per byte". That block should
reversing the array from 'bindump' and copy it to 'final' per 8 items,
e.g. a = ['0', '1', '0', '1', '0', '1', '0', '1', '2', '1', '2', '1',
'2', '1', '2', '1', '3', '2', '3', '2', '3', '2', '3', '2']
b = ['3', '2', '3', '2', '3', '2', '3', '2', '2', '1', '2', '1', '2',
'1', '2', '1', '0', '1', '0', '1', '0', '1', '0', '1']
Any advice about this matter would be very appreciated.
Thanks in advance.
C
I'm trying to write a class that can convert ascii to binary and vice
versa. I write my class based on this function I've found on internet
def ascii_to_bin(char):
ascii = ord(char)
bin = []
while (ascii > 0):
if (ascii & 1) == 1:
bin.append("1")
else:
bin.append("0")
ascii = ascii >> 1
bin.reverse()
binary = "".join(bin)
zerofix = (8 - len(binary)) * '0'
return zerofix + binary
some_string = 'Time to go now, Rummy?'
binary = []
for char in some_string:
binary.append(ascii_to_bin(char))
print binary
print " ".join(binary)
That works perfectly, but when I try to implement it in my own class it
gives me alot of headache, also because I'm totally new to the language.
It work only with one character at a time, and if I give a string it
just give some weird result.
if len(sys.argv) < 2:
print 'usage:', os.path.basename(sys.argv[0]), 'text'
sys.exit()
class Converterab:
'''
Ascii-binary converter.
'''
def __init__(self, string):
self.string = string
def ascii_to_bin(self):
bindump = []
for char in self.string:
bin = ord(char)
while bin > 0:
if (bin & 1) == 1:
bindump.append("1")
else:
bindump.append("0")
bin = bin >> 1
bindump.reverse()
print bindump # Debug tool, delete this
'''
Zero fix in bindump
'''
bindump.insert(0, "0")
count = 0
pos = 0
for dg in bindump:
count += 1
pos += 1
if count == 8:
bindump.insert(pos, "0")
count = 0
bindump.pop()
print bindump # Debug tool, delete this, the best result so far
'''
Reversing array per byte
'''
final = []
pos -= pos # Set pos to 0 again
while len(bindump) != 0:
print count # Debug tool, delete this, this is weird, start at 1, I expected 0
count += 1
if count > 8:
pos += 8
count -= count
final.insert(pos, bindump.pop())
print final # Debug tool, delete this
'''
for ar in bindump:
count += 1
if (count < 8):
final.insert(pos, bindump.pop())
elif (count >= 8):
pos = count
final.insert(pos, bindump.pop())
else:
final.insert(pos, bindump.pop())
'''
final.insert(0, final.pop())
binary = "".join(final)
return binary
result = Converterab(sys.argv[1])
print "Char : ", result.ascii_to_bin()
The problem start at "Reversing array per byte". That block should
reversing the array from 'bindump' and copy it to 'final' per 8 items,
e.g. a = ['0', '1', '0', '1', '0', '1', '0', '1', '2', '1', '2', '1',
'2', '1', '2', '1', '3', '2', '3', '2', '3', '2', '3', '2']
b = ['3', '2', '3', '2', '3', '2', '3', '2', '2', '1', '2', '1', '2',
'1', '2', '1', '0', '1', '0', '1', '0', '1', '0', '1']
Any advice about this matter would be very appreciated.
Thanks in advance.
C