解析量子程序二进制文件¶
接口介绍¶
我们先用pyQPanda构建一个量子程序:
prog = QProg() prog << H(qubits[0]) \ << CNOT(qubits[0], qubits[1]) \ << CNOT(qubits[1], qubits[2]) \ << CNOT(qubits[2], qubits[3])
序列化之后经过base64编码之后得到的结果是(具体序列化的方法参照 量子程序序列化)
b'AAAAAAQAAAAEAAAABAAAAA4AAQAAAAAAJAACAAAAAQAkAAMAAQACACQABAACAAMA\n'
现在就对这个结果反序列化,先将base64的结果解码成二进制数据:
str_base64_data = b'AAAAAAQAAAAEAAAABAAAAA4AAQAAAAAAJAACAAAAAQAkAAMAAQACACQABAACAAMA\n' data = [int(x) for x in bytes(base64.decodebytes(str_base64_data))]
我们可以使用QPanda2封装的一个接口:
convert_binary_data_to_qprog(qvm, data, qubits_parse, cbits_parse, parseProg);
实例¶
from pyqpanda import * import base64 if __name__ == "__main__": qvm = CPUQVM() qvm.init_qvm() # base64的方式解码,得到的二进制数据 str_base64_data = b'AAAAAAQAAAAEAAAABAAAAA4AAQAAAAAAJAACAAAAAQAkAAMAAQACACQABAACAAMA\n'; data = [int(x) for x in bytes(base64.decodebytes(str_base64_data))] # 解析二进制数据,得到量子程序 parseProg = QProg() parseProg = convert_binary_data_to_qprog(qvm, data) # 量子程序转换OriginIR并打印 print(convert_qprog_to_originir(parseProg,qvm))
运行结果:
QINIT 4 CREG 4 H q[0] CNOT q[0],q[1] CNOT q[1],q[2] CNOT q[2],q[3]
注解
可以运行出正确的结果说明可以将序列化的量子程序正确的解析出来