1、脚本
import sys
def brainfuck_decode(code):
memory = [0] * 30000
pointer = 0
result = ""
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 == '[':
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 == ']':
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
i -= 1
else:
pass
i += 1
return result
try:
brainfuck_code = sys.argv[1]
except:
brainfuck_code = input("Brainfuck解码前:")
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