使用Jython从Java运行Python代码遇海象运算符语法错误
问题原因
你用到的**海象运算符(:=)**是Python 3.8才引入的语法,但Jython的当前稳定版本(比如2.7.x分支)并不支持这个新特性,所以会触发语法错误。
修复后的代码
把海象运算符的逻辑拆分成两步,先计算余数再判断,就能兼容Jython:
import math def int_to_16bytesmultiplearray(value): """ Encode an integer into a bytearray whose size will be a multiple of 16 bytes (i.e. 128bits) :param value: :return: """ # special case. 0 has a zero bit length if value == 0: return int_to_16bytesarray(0) bitlen = value.bit_length() min_length = math.ceil(bitlen/8) rem = min_length % 16 if rem > 0: extra = 16 - rem else: extra = 0 return value.to_bytes(length=min_length+extra, byteorder="big")
注意要确保代码开头导入了math模块,否则math.ceil会引发未定义错误。
内容的提问来源于stack exchange,提问作者Muhammed Atef
相关产品推荐
相关产品推荐

