在 Python 中解析 TLV 值并打印结果

Parsing TLV value in Python and print results

提问人:Null Zero 提问时间:3/3/2023 更新时间:3/3/2023 访问量:132

问:

我有一个 base64 字符串,我想将其解码为其 TLV 源,然后将 TLV 和 pring 数据解析为常规字符串:

import tlv8 ,base64

base64QR ="ASZNYWdpYyBGbG9vcmluZyBHZW5lcmFsIENvbnRyYWN0aW5nIEVzdAIPMzAwNjk2MjA4MTAwMDAzAxQyMDIzLTAyLTIwVDExOjI3OjU2WgQGNDAwLjY4BQU1Mi4yNg=="
rawByte = base64.b64decode(base64QR)

structure1 = {
1: tlv8.DataType.STRING,
2: tlv8.DataType.STRING,
3: tlv8.DataType.STRING,
4: tlv8.DataType.STRING,
5: tlv8.DataType.STRING
}

print( list(tlv8.decode(rawByte, structure1)))

但是,当我打印结果时,我得到的是内存地址而不是实际值 - 下面是输出:

[<TLV8.0x00000243034EEFD0> 的条目对象 <tlv8。0x00000243034EF010> <tlv8 处的条目对象。0x00000243035A7210> <tlv8 处的条目对象。位于 0x00000243035A72D0> 的条目对象 <tlv8。0x00000243035A7390>] 处的 Entry 对象

如何获取值而不是内存地址?

我使用了 base64 和 TLV8 模块 谢谢

Python TLV

评论

0赞 mkrieger1 3/3/2023
模块的文档对对象的属性和方法有什么看法。tlv8Entry
0赞 Null Zero 3/3/2023
TLV8 条目由以下部分组成: 类型:此 8 位字段表示数据表示的信息类型。长度:此 8 位字段表示数据的长度(不包括 type 和 length 的 2 个字节。对于长度超过 255 字节的数据,有一个定义的过程可用。值:这些长度字节表示此 TLV 的值。
0赞 Null Zero 3/3/2023
更多细节可以在这里找到:pypi.org/project/tlv8
0赞 mkrieger1 3/3/2023
因此,您可能应该使用前面提到的 value 属性。或者按照您链接的页面中“解码字节表示形式”下的示例进行操作。例如,显然有一个功能可以以人类可读的形式显示对象。format_stringEntry
0赞 Null Zero 3/3/2023
它通过进行以下更改来工作: final_output= tlv8.decode(rawByte, structure1) print(tlv8.format_string(final_output)) SOLVED - 谢谢

答: 暂无答案