开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 188|回复: 6
收起左侧

[完成] 求助python转易语言

 关闭 [复制链接]
结帖率:100% (3/3)
发表于 2025-2-10 09:58:36 | 显示全部楼层 |阅读模式   四川省成都市
50精币
因本人对python不太熟悉
所以请求大佬们能否帮忙将以下python代码转换成易语言
或者是否有办法用易语言来运行这一段代码

  
def generate_a1 (hex_str):
Character_tables = ' QbNUTaMecPWVSKdCgXIJRrsfYXwyqpvnDHWzQuPmAGtAxRTphBcwBnNkjbFmvVMqaFkEutSrDCxsCKjBzEyDEUJTZfHZghMHYFdeASGNaUgFtdbYRkshJHkFNXMcKdfw'
a1 = [ ' '] * 8  # 初始化结果数组
# 生成十六进制字符串
hex_str = ' '.join(c for c in hex_str.upper() if c in "0123456789ABCDEF")
if len (hex_str) == 12:
v19 = [0] * 16
for i in range (8):
v19[i] = ord (hex_str[11 - i])
# 计算v10
v10 = 5
for j in range (8):
current_char = v19[j]
if 49 <= current_char <= 57:  # ' 1'-'9'
v10 = (current_char - 48) | j
break
for k in range (8):
v12 = v19[k]
if k > 3:
idx = k - 4
v14 = v19[idx] if 0 <= idx < 16 else 0
v15 = v12 | v14
else:
idx = 7 - k
v14 = v19[idx] if 0 <= idx < 16 else 0
v15 = v12 & v14
v16 = v15 + v10
if v16 > 127:
v16 = k
v10 = k
if 0 <= v16 < 128:
a1[k] = Character_tables[v16]
else:
a1[k] = ' \0'
if k == 0:
v10 += 1
v10 += k
else:
return "MAC错误"
return ' '.join(a1)



最佳答案

查看完整内容

DeepSeek翻译,;检查一下有没有错误 .版本 2 .子程序 generate_a1, 文本型 .参数 hex_str, 文本型 .局部变量 Character_tables, 文本型 .局部变量 a1, 文本型, , "8" .局部变量 v19, 整数型, , "16" .局部变量 v10, 整数型 .局部变量 i, 整数型 .局部变量 j, 整数型 .局部变量 k, 整数型 .局部变量 current_char, 整数型 .局部变量 idx, 整数型 .局部变量 v12, 整数型 .局部变量 v14, 整数型 .局部变量 v15, ...
结帖率:70% (7/10)

签到天数: 31 天

发表于 2025-2-10 09:58:37 | 显示全部楼层   福建省泉州市
DeepSeek翻译,;检查一下有没有错误
.版本 2

.子程序 generate_a1, 文本型
.参数 hex_str, 文本型
.局部变量 Character_tables, 文本型
.局部变量 a1, 文本型, , "8"
.局部变量 v19, 整数型, , "16"
.局部变量 v10, 整数型
.局部变量 i, 整数型
.局部变量 j, 整数型
.局部变量 k, 整数型
.局部变量 current_char, 整数型
.局部变量 idx, 整数型
.局部变量 v12, 整数型
.局部变量 v14, 整数型
.局部变量 v15, 整数型
.局部变量 v16, 整数型

Character_tables = “QbNUTaMecPWVSKdCgXIJRrsfYXwyqpvnDHWzQuPmAGtAxRTphBcwBnNkjbFmvVMqaFkEutSrDCxsCKjBzEyDEUJTZfHZghMHYFdeASGNaUgFtdbYRkshJHkFNXMcKdfw”
a1 = { “”, “”, “”, “”, “”, “”, “”, “” }

' 过滤非十六进制字符
hex_str = 到大写 (hex_str)
hex_str = 子文本替换 (hex_str, “ ”, “”, , , 真)
hex_str = 子文本替换 (hex_str, “-”, “”, , , 真)
hex_str = 子文本替换 (hex_str, “:”, “”, , , 真)
hex_str = 子文本替换 (hex_str, “.”, “”, , , 真)

' 检查长度
.如果真 (取文本长度 (hex_str) ≠ 12)
    返回 (“MAC错误”)
.如果真结束

' 初始化 v19 数组
.计次循环首 (8, i)
    v19 [i] = 取代码 (取文本中间 (hex_str, 12 - i, 1), )
.计次循环尾 ()

' 计算 v10
v10 = 5
.计次循环首 (8, j)
    current_char = v19 [j]
    .如果真 (current_char ≥ 49 且 current_char ≤ 57)
        v10 = 位或 (current_char - 48, j)
        跳出循环 ()
    .如果真结束
.计次循环尾 ()

' 计算 a1
.计次循环首 (8, k)
    v12 = v19 [k]
    .如果真 (k > 3)
        idx = k - 4
        .如果真 (idx ≥ 0 且 idx < 16)
            v14 = v19 [idx]
        .否则
            v14 = 0
        .如果真结束
        v15 = 位或 (v12, v14)
    .否则
        idx = 7 - k
        .如果真 (idx ≥ 0 且 idx < 16)
            v14 = v19 [idx]
        .否则
            v14 = 0
        .如果真结束
        v15 = 位与 (v12, v14)
    .如果真结束

    v16 = v15 + v10
    .如果真 (v16 > 127)
        v16 = k
        v10 = k
    .如果真结束

    .如果真 (v16 ≥ 0 且 v16 < 128)
        a1 [k] = 取文本中间 (Character_tables, v16 + 1, 1)
    .否则
        a1 [k] = “”
    .如果真结束

    .如果真 (k = 0)
        v10 = v10 + 1
    .如果真结束
    v10 = v10 + k
.计次循环尾 ()

返回 (取文本合并 (a1, “”))
回复

使用道具 举报

结帖率:100% (3/3)

签到天数: 27 天

发表于 2025-2-10 10:16:44 | 显示全部楼层   江苏省镇江市
我建议你找AI帮你解读下每一行的代码意思,然后根据意思改写。我个人觉得,这段代码没有太多的调用,应该就是逻辑运算。
回复

使用道具 举报

结帖率:50% (1/2)

签到天数: 21 天

发表于 2025-2-10 10:41:44 | 显示全部楼层   云南省楚雄彝族自治州
.版本 2

.子程序 generate_a1, 文本型
.参数 hex_str, 文本型
.局部变量 Character_tables, 文本型
.局部变量 a1, 文本型, , "8"
.局部变量 v19, 整数型, , "16"
.局部变量 v10, 整数型
.局部变量 i, 整数型
.局部变量 j, 整数型
.局部变量 k, 整数型
.局部变量 current_char, 整数型
.局部变量 v12, 整数型
.局部变量 idx, 整数型
.局部变量 v14, 整数型
.局部变量 v15, 整数型
.局部变量 v16, 整数型

Character_tables = “QbNUTaMecPWVSKdCgXIJRrsfYXwyqpvnDHWzQuPmAGtAxRTphBcwBnNkjbFmvVMqaFkEutSrDCxsCKjBzEyDEUJTZfHZghMHYFdeASGNaUgFtdbYRkshJHkFNXMcKdfw”
a1 = { “”, “”, “”, “”, “”, “”, “”, “” }  ' 初始化结果数组

' 生成十六进制字符串
hex_str = 到大写 (hex_str)
hex_str = 子文本替换 (hex_str, “ ”, “”, , , 真)
hex_str = 子文本替换 (hex_str, “0”, “”, , , 真)
hex_str = 子文本替换 (hex_str, “1”, “”, , , 真)
hex_str = 子文本替换 (hex_str, “2”, “”, , , 真)
hex_str = 子文本替换 (hex_str, “3”, “”, , , 真)
hex_str = 子文本替换 (hex_str, “4”, “”, , , 真)
hex_str = 子文本替换 (hex_str, “5”, “”, , , 真)
hex_str = 子文本替换 (hex_str, “6”, “”, , , 真)
hex_str = 子文本替换 (hex_str, “7”, “”, , , 真)
hex_str = 子文本替换 (hex_str, “8”, “”, , , 真)
hex_str = 子文本替换 (hex_str, “9”, “”, , , 真)
hex_str = 子文本替换 (hex_str, “A”, “”, , , 真)
hex_str = 子文本替换 (hex_str, “B”, “”, , , 真)
hex_str = 子文本替换 (hex_str, “C”, “”, , , 真)
hex_str = 子文本替换 (hex_str, “D”, “”, , , 真)
hex_str = 子文本替换 (hex_str, “E”, “”, , , 真)
hex_str = 子文本替换 (hex_str, “F”, “”, , , 真)

.如果真 (取文本长度 (hex_str) = 12)
    .计次循环首 (8, i)
        v19 = 取代码 (取文本中间 (hex_str, 12 - i, 1), )
    .计次循环尾 ()

    v10 = 5
    .计次循环首 (8, j)
        current_char = v19 [j]
        .如果真 (current_char ≥ 49 且 current_char ≤ 57)  ' '1'-'9'
            v10 = 位或 (current_char - 48, j)
            跳出循环 ()
        .如果真结束
    .计次循环尾 ()

    .计次循环首 (8, k)
        v12 = v19 [k]
        .如果真 (k > 3)
            idx = k - 4
            .如果真 (idx ≥ 0 且 idx < 16)
                v14 = v19 [idx]
            .否则
                v14 = 0
            .如果真结束
            v15 = 位或 (v12, v14)
        .否则
            idx = 7 - k
            .如果真 (idx ≥ 0 且 idx < 16)
                v14 = v19 [idx]
            .否则
                v14 = 0
            .如果真结束
            v15 = 位与 (v12, v14)
        .如果真结束

        v16 = v15 + v10
        .如果真 (v16 > 127)
            v16 = k
            v10 = k
        .如果真结束

        .如果真 (v16 ≥ 0 且 v16 < 128)
            a1 [k] = 取文本中间 (Character_tables, v16 + 1, 1)
        .否则
            a1 [k] = “”
        .如果真结束

        .如果真 (k = 0)
            v10 = v10 + 1
        .如果真结束
        v10 = v10 + k
    .计次循环尾 ()
.否则
    返回 (“MAC错误”)
.如果真结束

返回 (a1 [1] + a1 [2] + a1 [3] + a1 [4] + a1 [5] + a1 [6] + a1 [7] + a1 [8])


补充内容 (2025-2-10 10:42):
代码说明:
Character_tables:存储字符表。

a1:初始化长度为 8 的数组,用于存储最终结果。

hex_str:处理输入的十六进制字符串,过滤非十六进制字...

补充内容 (2025-2-10 10:42):
3.hex_str:处理输入的十六进制字符串,过滤非十六进制字符。

补充内容 (2025-2-10 10:43):
4.v19:存储处理后的字符 ASCII 值。
5.v10:初始值为 5,用于后续计算。
6.循环处理:根据 Python 代码逻辑,逐字符处理并生成最终结果。
回复

使用道具 举报

结帖率:100% (3/3)

签到天数: 25 天

 楼主| 发表于 2025-2-10 12:39:39 | 显示全部楼层   四川省成都市
我的yyy123 发表于 2025-2-10 11:57
DeepSeek翻译,;检查一下有没有错误
.版本 2

你们两人发的都是这个问题
v14 = v19 [idx]
提示 数组成员引用下标必须大于等于1
回复

使用道具 举报

结帖率:70% (7/10)

签到天数: 31 天

发表于 2025-2-10 13:52:56 | 显示全部楼层   福建省泉州市
.计次循环首 (8, i)
    v19 [i] = 取代码 (取文本中间 (hex_str, 12 - i, 1), )
.计次循环尾 ()

好像v19只有一个,可以用逐字分割()或加入成员()

文本_逐字分割(hex_str,v19) 替换上面的计次循环

.计次循环首 (8, i)
    加入成员(v19, 取代码 (取文本中间 (hex_str, 12 - i, 1), ))
.计次循环尾 ()
回复

使用道具 举报

结帖率:100% (3/3)

签到天数: 25 天

 楼主| 发表于 2025-2-10 18:56:59 | 显示全部楼层   四川省成都市
我的yyy123 发表于 2025-2-10 13:52
.计次循环首 (8, i)
    v19  = 取代码 (取文本中间 (hex_str, 12 - i, 1), )
.计次循环尾 ()

上面的我自己解决了,但是易语言数组问题是从1开始 就有点坑。。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表