You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python实现Golang的Little Endian Uint64二进制编码逻辑?

Python实现对应Golang的随机uint64生成及小端字节转换

一、还原Golang原代码逻辑

Golang代码核心是生成16字节随机数据,取前8字节按小端序解析为uint64。Python可以通过secrets(安全随机场景推荐)或os.urandom生成随机字节,搭配struct模块完成类型转换:

import secrets
import struct

# 生成16字节随机数组
ar_bytes = secrets.token_bytes(16)
# 取前8字节,按小端序解析为uint64
a0 = struct.unpack('<Q', ar_bytes[:8])[0]
  • secrets.token_bytes(16) 对应Golang的rand.Read(arBytes),生成安全的加密级随机字节流
  • struct.unpack('<Q', ...) 中,<代表小端序,Q对应无符号64位整数(即Golang的uint64),unpack返回元组,取第一个元素即为目标数值

若仅用于测试场景,也可替换为random模块,但生产环境优先使用secrets或os.urandom保证随机性安全。

二、从uint64生成小端字节数组

你提到的将uint64转为小端字节数组的需求,同样用struct模块的pack方法实现:

import struct

# 假设已有目标uint64数值
a0 = 1234567890123456789
# 按小端序打包为8字节数组
little_endian_bytes = struct.pack('<Q', a0)
  • struct.pack('<Q', a0) 会把uint64数值转换成8字节的小端字节数组,效果和Golang的binary.LittleEndian.PutUint64完全一致

补充说明

  • struct是Python处理字节与基础数据类型转换的标准库,能覆盖encoding/binary的绝大多数常用功能
  • 若需要处理16字节数组的后8字节,直接切片ar_bytes[8:16]后用同样的struct.unpack('<Q', ...)解析即可

内容的提问来源于stack exchange,提问作者isabella

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 20:12:49