量子程序序列化
简介
定义一种协议将量子程序序列化为二进制数据,方便量子程序的存储与传输。
接口介绍
我们先用pyqpanda构建一个量子程序:
prog = QProg() prog << H(qubits[0]) \ << CNOT(qubits[0], qubits[1]) \ << CNOT(qubits[1], qubits[2]) \ << CNOT(qubits[2], qubits[3])
然后调用 convert_qprog_to_binary 接口实现序列化
prog_str = convert_qprog_to_binary(prog, qvm)
Note
量子程序序列化是两个过程, 首先将量子程序序列化为二进制, 然后再将二进制以base64的格式编码,转化为字符串。
实例
from pyqpanda import * import base64 if __name__ == "__main__": qvm = CPUQVM() qvm.init_qvm() qubits = qvm.qAlloc_many(4) cbits = qvm.cAlloc_many(4) # 构建量子程序 prog = QProg() prog << H(qubits[0]) \ << CNOT(qubits[0], qubits[1]) \ << CNOT(qubits[1], qubits[2]) \ << CNOT(qubits[2], qubits[3]) # 量子程序序列化 binary_data = convert_qprog_to_binary(prog, qvm) # 将得到的二进制数据以base64的方式编码,并打印 str_base64_data = base64.encodebytes(bytes(binary_data)) print(str_base64_data)
运行结果:
b'AAAAAAQAAAAEAAAABAAAAA4AAQAAAAAAJAACAAAAAQAkAAMAAQACACQABAACAAMA\n'
Note
二进制数据不能直接输出,以base64的编码格式编码,得到相应的字符串