Brainfuck解码脚本

文章介绍了如何使用Python脚本实现Brainfuck编码的解码功能,包括内存管理、指针操作和用户输入的处理。提供了两种使用方法,展示了如何将给定的Brainfuck代码转换成可读字符串。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、脚本

# encoding: utf-8
import sys

def brainfuck_decode(code):
    # 初始化内存和指针
    memory = [0] * 30000
    pointer = 0

    # 结果字符串
    result = ""

    # 循环遍历 Brainfuck 代码
    i = 0
    while i < len(code):
        char = code[i]

        if char == '>':
            pointer += 1
        elif char == '<':
            pointer -= 1
        elif char == '+':
            memory[pointer] += 1
        elif char == '-':
            memory[pointer] -= 1
        elif char == '.':
            result += chr(memory[pointer])
        elif char == ',':
            # 这里需要实现读取用户输入的逻辑
            pass
        elif char == '[':
            # 如果当前指针所在的内存位置为0,则跳转到与之对应的"]"之后
            if memory[pointer] == 0:
                loop_count = 1
                while loop_count > 0:
                    i += 1
                    if code[i] == '[':
                        loop_count += 1
                    elif code[i] == ']':
                        loop_count -= 1
            else:
                # 否则继续执行下面的指令
                pass
        elif char == ']':
            # 如果当前指针所在的内存位置不为0,则跳转到与之对应的"["之前
            if memory[pointer] != 0:
                loop_count = 1
                while loop_count > 0:
                    i -= 1
                    if code[i] == ']':
                        loop_count += 1
                    elif code[i] == '[':
                        loop_count -= 1
                # 因为循环结束后还会+1,所以这里需要减去1
                i -= 1
            else:
                # 否则继续执行下面的指令
                pass

        i += 1

    return result


try:
    brainfuck_code = sys.argv[1]
except:
    brainfuck_code = input("Brainfuck解码前:")
# brainfuck_code = "++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------."
decoded_string = brainfuck_decode(brainfuck_code)
print("Brainfuck解码后:" + decoded_string)

2、使用方法

  • 在线代码运行:https://tool.lu/coderunner/
# 方法一:脚本内部赋值
❯ python Brainfuck解码.py
Brainfuck解码前:++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.
Brainfuck解码后:Hello World
# 方法二:直接赋值给脚本
❯ python Brainfuck解码.py "++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------."
Brainfuck解码后:Hello World
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值