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

Python中从文件读取椭圆曲线点坐标实现点加法的问题求助

解决椭圆曲线点加法中的坐标读取与类型转换问题

你的问题核心在于两点:

  • 错误地将B赋值为字符串字面量'data',而非读取到的坐标数据
  • 直接对包含括号、逗号的完整字符串执行int()转换,忽略了坐标的十六进制格式与字符串结构

以下是修正方案:

1. 解析坐标字符串

首先处理从文件读取的data字符串,去除首尾的括号,再按逗号分割得到两个十六进制坐标值:

# 读取文件内容
with open('B-coordinates.txt', 'r') as f:
    data = f.read().strip()

# 去除首尾括号,分割成两个坐标字符串
# 比如将"(0xabc,0xdef)"变成["0xabc", "0xdef"]
bx_str, by_str = data.strip('()').split(',')

2. 转换为整数并构造点元组

用int(hex_str, 16)将十六进制字符串转为整数,再构造和A格式一致的元组:

Bx = int(bx_str.strip(), 16)
By = int(by_str.strip(), 16)
B = (Bx, By)

完整修正代码

Ax = 0xbc46aa75e5948daa08123b36f2080d234aac274bf62fca8f9eb0aadf829c744a
Ay = 0xe5f28c3a044b1cac54a9b4bf719f02dfae93a0bae73832301e786104f43255a5
A = (Ax, Ay)

# 读取并解析B点坐标
with open('B-coordinates.txt', 'r') as f:
    data = f.read().strip()

# 解析坐标字符串
bx_str, by_str = data.strip('()').split(',')
Bx = int(bx_str.strip(), 16)
By = int(by_str.strip(), 16)
B = (Bx, By)

# 现在可以正常执行点加法
# add(A, B)  # 假设你的add函数已经实现了椭圆曲线点加法逻辑

关键说明

  • 使用with语句读取文件是Python的最佳实践,会自动关闭文件
  • strip('()')用于去除字符串首尾的括号,split(',')将字符串分割为两个坐标部分
  • int(hex_str, 16)明确指定按十六进制解析字符串,支持带0x前缀的格式
  • 修正后的B是和A一致的整数元组,符合椭圆曲线点加法函数的参数要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 06:01:17