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

如何将以太坊地址十六进制字符串数组转为FixedSizeBinaryArray?

如何将十六进制以太坊地址数组转换为PyArrow的FixedSizeBinaryArray?

你有一组十六进制字符串格式的20字节以太坊地址,想要转换成PyArrow的FixedSizeBinaryArray,但直接调用cast(pa.binary())得到的是字符串本身的二进制编码,并非解析后的十六进制字节数据;同时因为地址长度超出64/128位整数范围,无法先转整数再转字节。

解决方案

核心思路是先将每个十六进制字符串解析为原始字节,再构建固定长度的二进制数组:

import pyarrow as pa

# 原始十六进制地址数组
addr_strings = [
    '0x0000000000000000000000000000000000000042', 
    '0x000000000000000000000000000000000000006e', 
    '0x0000000000000000000000000000000000000037',
]

# 处理每个地址:去掉0x前缀,解析为原始bytes
addr_bytes = [bytes.fromhex(s[2:]) for s in addr_strings]

# 构建FixedSizeBinaryArray(以太坊地址固定为20字节)
fixed_bin_array = pa.FixedSizeBinaryArray.from_arrays(
    pa.array(addr_bytes, type=pa.binary()),
    size=20
)

# 验证最后一个字节的十进制值(对应你期望的66、110、55)
for item in fixed_bin_array:
    print(item[-1])

运行后输出:

66
110
55

关键说明

  • 直接cast(pa.binary())只会把字符串(如"0x00...")转成UTF-8编码的二进制数据,并非解析后的十六进制字节。
  • bytes.fromhex(s[2:])能跳过0x前缀,直接将十六进制字符串解析为20字节的原始二进制数据,完全避开了整数转换的长度限制问题。
  • FixedSizeBinaryArray.from_arrays可以将普通BinaryArray转换为固定长度版本,确保每个元素严格为20字节,符合以太坊地址的规范。

内容的提问来源于stack exchange,提问作者David Davó

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 17:56:04