Python中无需中间str对象生成数字的十进制字符串字节表示
无需中间字符串生成对应bytes对象的方法
可以不创建中间str对象完成需求,以下是具体实现方式:
方法:数字运算拆分+字节拼接
通过数学运算逐位提取整数的每一位数字,将每一位数字转换为对应的ASCII字节(数字n对应的ASCII码为ord('0') + n),再拼接成最终的bytes对象。
代码示例(支持正整数):
x = 123 b_result = b'' temp = x if temp == 0: b_result = b'0' else: while temp > 0: digit = temp % 10 # 将数字转为对应的ASCII字节,拼接到结果头部 b_result = bytes([ord('0') + digit]) + b_result temp = temp // 10 print(b_result) # 输出: b'123'
扩展支持负数:
如果需要处理负数,只需在结果前添加负号对应的字节b'-':
x = -123 b_result = b'' temp = abs(x) if temp == 0: b_result = b'0' else: while temp > 0: digit = temp % 10 b_result = bytes([ord('0') + digit]) + b_result temp = temp // 10 if x < 0: b_result = b'-' + b_result print(b_result) # 输出: b'-123'
说明
这种方式完全基于数字运算和字节操作,全程不会创建任何中间字符串对象,直接生成目标bytes对象。
内容的提问来源于stack exchange,提问作者Thayne
相关产品推荐
相关产品推荐

