1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
# 构建卦名 → 二进制编码的映射表
gua_list = [
"乾为天","坤为地","水雷屯","山水蒙","水天需","天水讼","地水师","水地比",
"风天小畜","天泽履","地天泰","天地否","天火同人","火天大有","地山谦","雷地豫",
"泽雷随","山风蛊","地泽临","风地观","火雷噬嗑","山火贲","山地剥","地雷复",
"天雷无妄","山天大畜","山雷颐","泽风大过","坎为水","离为火","泽山咸","雷风恒",
"天山遁","雷天大壮","火地晋","地火明夷","风火家人","火泽睽","水山蹇","雷水解",
"山泽损","风雷益","泽天夬","天风姤","泽地萃","地风升","泽水困","水风井",
"泽火革","火风鼎","震为雷","艮为山","风山渐","雷泽归妹","雷火丰","火山旅",
"巽为风","兑为泽","风水涣","水泽节","风泽中孚","雷山小过","水火既济","火水未济"
]
# 卦名对应的6位二进制编码
gua_dict = {name: format(i, '06b') for i, name in enumerate(gua_list, start=0)}
# 给定卦名序列
gua_sequence = [
"山风蛊", "风火家人", "火天大有", "火雷噬嗑", "山风蛊", "雷水解", "地风升", "地雷复",
"泽风大过", "火山旅", "离为火", "雷风恒", "泽山咸", "风地观", "坤为地", "雷泽归妹",
"地雷复", "风山渐", "坤为地", "震为雷", "山天大畜", "山火贲", "雷山小过", "雷水解",
"天火同人", "地水师", "雷山小过", "风火家人", "地雷复", "艮为山", "山风蛊", "风山渐",
"地雷复", "艮为山", "山天大畜", "雷天大壮", "地山谦", "地雷复", "山火贲", "雷天大壮",
"雷风恒", "泽雷随"
]
# 生成完整二进制字符串
bitstream = ''.join(gua_dict[name] for name in gua_sequence)
# 每8位转为ASCII字符
plaintext = ''.join(chr(int(bitstream[i:i+8], 2)) for i in range(0, len(bitstream), 8))
# 打印结果
print("明文为:", plaintext)
|