You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python解析TLV值输出内存地址,如何获取实际字符串值?

解决tlv8.Entry对象打印显示内存地址的问题

tlv8模块解析TLV后返回的tlv8.Entry是自定义对象,直接打印会输出对象的默认字符串表示(类似内存地址),你需要访问对象的属性来提取实际数据。

具体步骤与代码示例

1. Base64解码为TLV二进制数据

先把Base64字符串解码成TLV格式的二进制字节流:

import base64
import tlv8

# 替换成你的目标Base64字符串
base64_str = "你的Base64内容"
tlv_bytes = base64.b64decode(base64_str)

2. 解析TLV并提取真实值

tlv8.Entry对象包含三个核心属性:

  • tag: TLV的标签标识(整数或字节类型)
  • length: 数据的字节长度
  • value: 存储的实际数据(字节类型)

你需要读取value属性,并根据数据的实际编码转换为字符串:

# 解析TLV数据
entries = tlv8.parse(tlv_bytes)

# 遍历每个条目,提取并打印真实值
for entry in entries:
    # 假设数据是UTF-8编码,根据实际情况调整编码格式
    real_data = entry.value.decode('utf-8')
    print(f"标签: {entry.tag}, 真实值: {real_data}")

3. 特殊数据类型处理

如果TLV存储的不是字符串,而是其他类型,需要对应转换:

  • 整数类型:int.from_bytes(entry.value, byteorder='big')(根据实际字节序调整)
  • 二进制数据转十六进制:entry.value.hex()

完整可运行示例

import base64
import tlv8

# 示例Base64字符串(解码后对应包含"Hello TLV"的TLV数据)
sample_base64 = "SGVsbG8gVExW"

# 解码Base64
tlv_data = base64.b64decode(sample_base64)

# 解析TLV
tlv_entries = tlv8.parse(tlv_data)

# 遍历输出真实值
for i, entry in enumerate(tlv_entries):
    try:
        # 尝试转UTF-8字符串
        value = entry.value.decode('utf-8')
    except UnicodeDecodeError:
        # 转失败则输出十六进制
        value = entry.value.hex()
    print(f"条目 {i+1}: 标签={entry.tag}, 值={value}")

内容的提问来源于stack exchange,提问作者Null Zero

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 22:00:10