为了账号安全,请及时绑定邮箱和手机立即绑定

JS中 undefined " |=" 运算在Python中如何实现

JS中 undefined " |=" 运算在Python中如何实现

白衣染霜花 2018-12-27 16:14:21
Javascript代码:function rstr2binl(d) {    for (var a = Array(d.length >> 2), b = 0; b < a.length; b++) {        a[b] = 0;    }    for (b = 0; b < d.length * 8; b += 8){        a[b >> 5] |= (d.charCodeAt(b / 8) & 255) << b % 32;    }    return a}Python代码:def rstr2binl(d):    a = [0] * (len(d) >> 2)    for b in range(0, len(a), 1):        a[b] = 0    for b in range(0, len(d) * 8, 8):        a[b >> 5] |= (ord(d[b / 8]) & 255 << b) % 32    return arstr2binl("abc123456")Python输出:Error list out of rangeJS输出:[ 828596833, 892613426, 54 ]在JS代码中有些步骤是用 undefined |= (d.charCodeAt(b / 8) & 255) << b % 32;请问在Python中如何实现呢,或者有其他办法达到这个函数的功能吗
查看完整描述

1 回答

?
炎炎设计

TA贡献1808条经验 获得超4个赞

因为在js里面不会有列表的下标越界问题,比如


a = [1, 2]

a[0] 输出1

a[1] 输出2

a[2] 输出undefined

在python里如果先定长列表的长度,你去访问a[2]肯定越界了


def rstr2binl(d):

    a = [0] * ((len(d) >> 2) + 1)

    print a

    for b in range(0, len(d) * 8, 8):

        a[b >> 5] |= (ord(d[b / 8]) & 255) << b % 32


    return a


查看完整回答
反对 回复 2019-01-17
  • 1 回答
  • 0 关注
  • 432 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信