如何将数字串转成BCD码?

如何将数字串转成BCD码?

比如我有六位数字,300209,如何转成BCD码呢?转换后再将结果用base64编码。
0011         0000        0000     0010   0000   1001?
用python怎么转?
我用最笨的办法 类似下面
a=300209
for s in  str(a):
    if "3" == s:
        print "0011"
    if "0" == s:
        print "0000"
是二进制啊,不是字符串。

是将300209转成三字节的二进制BCD码表示法,再将这三个字节用base64转成4位的ASC码。
struct.pack?
依然没看明白
300209是个字符串对吗
将"300209"进行BCD存储?
struct.pack貌似操作不了半个字节
应该要用些位操作符来实现

[Copy to clipboard] [ - ]
CODE:
bcd = ''.join([chr(3 | (0 << 4)), chr(0 | (2 << 4)), chr(0 | (9 << 4))])

呵呵
封在3个字节里应该不行吧?4个字节应该可以
a=300209
r=0
for s in str(a):
    r=r|(int(s))
    r=r<<4
是不是这个意思?
比如"000001"经过转成BCD码后将二进制再进行base64编码转换,得出的结果应该是AAAB
但在python里应该怎么转呢?


[Copy to clipboard] [ - ]
CODE:
>>> import base64
>>> bcd=''.join([chr(0 | (0 << 4)), chr(0 | (0 << 4)), chr(0 | (1 << 4))])
>>> bcd
'\x00\x00\x10'
>>> base64.encodestring(bcd)
'AAAQ\n'
>>>