Velocity Reviews > bin2chr("01110011") # = 15 function ?

# bin2chr("01110011") # = 15 function ?

gcmartijn@gmail.com
Guest
Posts: n/a

 02-25-2008
H!

I'm searching for a simple
bin2chr("01110011") function that can convert all my 8bit data to a
chr so I can use something like this:

def bin(i):
l = ['0000', '0001', '0010', '0011', '0100', '0101', '0110',
'0111',
'1000', '1001', '1010', '1011', '1100', '1101', '1110',
'1111']
s = ''.join(map(lambda x, l=l: l[int(x, 16)], hex(i)[2:]))
if s[0] == '1' and i > 0:
s = '0000' + s
return s

print ord("s") # = 115
print bin(ord("s")) # = 01110011

test= open('output.ext,'wb')
test.write(bin2chr("01110011"))
test.write(bin2chr("01111011"))
test.write(bin2chr("01110111"))
test.close()

I think this is very easy but I'm not very good in python.
In a other program I use I do something like this

Function bin2int(b\$)
blen=Len(b)
For f=1 To blen
n=n Shl 1 + (Mid(b,f,1)="1")
Next
Return n
End Function

Tim Chase
Guest
Posts: n/a

 02-25-2008
> I'm searching for a simple
> bin2chr("01110011") function that can convert all my 8bit data to a
> chr so I can use something like this:

> print ord("s") # = 115
> print bin(ord("s")) # = 01110011
>
> test= open('output.ext,'wb')
> test.write(bin2chr("01110011"))
> test.write(bin2chr("01111011"))
> test.write(bin2chr("01110111"))
> test.close()

I think this simple one-liner should do it for you:

>>> bin2char = lambda s: chr(int(s,2))
>>> bin2char('01110011')

's'

which exploits int()'s ability to take a base (2, in this case).

-tkc