php ascii to bcd,Python Ascii to bcd bcd to Ascii

在网上搜不到关于 Ascii 和 bcd互相转化的文章,于是自己写了一个,和大家分享下。

没有考虑到效率,能够优化的地方望大家提出

"""

AscII字符转换为BCD字符

"""

def asc2bcd(inAsc, pad_L0_R1 = 0):

#全部转换为大写,为后面的转换提供方便

inAsc = inAsc.upper()

print inAsc

#判断如果非偶数个字符时,左补0,还是右补0

import copy

if(len(inAsc)%2 == 1):

if(pad_L0_R1 == 0):

inAsc = copy.copy('0'+inAsc)

if(pad_L0_R1 == 1):

inAsc = copy.copy(inAsc+'0')

#检测输入的p字符串中是否都为0-9 a-f A-F 中的字符

for i in inAsc:

if ((i>='0')and(i<='9')):

continue;

if ((i>='A')and(i<='F')):

continue

print "输入了非0-9 a-f A-F 中的字符"

return

a = array.array('B', inAsc)

v = array.array('B','/x00'*1000)

length = 0

b = 0

c = 0

for i in range(0, len(inAsc), 2):

if ((a[i]>=ord('0'))&(a[i]<=ord('9'))):

b = 0x30

else:

b = ord('A')-10

if ((a[i+1]>=ord('A'))and(a[i+1]<=ord('F'))):

c = ord('A')-10

else:

c = 0x30

v[i/2] = ((a[i]-b)<<4 ) + (a[i+1]-c)

print ":::::%x" %v[i/2]

length += 1

#返回一个字符串

return [v.tostring(), length]

return [v[0:length], length]

'''

if __name__ == "__main__":

a = asc2bcd("12234567890a")

print '%x' %(ord(a[0][0]))

'''

'''

将BCD转换为ASC字符

'''

def Byte( Value ):

if(type(Value) == type('')):

return ord(Value[0])

"""

BCD转换为ASCII字符

"""

def bcd2asc(inBcd):

b = []

tmpAsc = [(/

str((Byte(i)&0xf0)>>4),/

str((Byte(i)&0x0f))/

) for i in inBcd/

]

for i in range(len(tmpAsc)):

for j in range(len(tmpAsc[0])):

b.append(tmpAsc[i][j])

for i in range(len(b)):

value = b[i]

if int(value)==10: b[i] = chr(ord('a'))

if int(value)==11: b[i] = str('b')

if int(value)==12: b[i] = str('c')

if int(value)==13: b[i] = str('d')

if int(value)==14: b[i] = str('e')

if int(value)==15: b[i] = str('f')

rStr = ''

for i in range(len(b)):

rStr += b[i]

return rStr

if __name__ == "__main__":    a = bcd2asc("/x78/x0a/xbc/xde/xf2")    print a

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值