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

如何在Python中实现类似C#的字节值转枚举成员功能?

在Python中实现C# Enum.ToObject的枚举值转换功能

Python的enum模块完全可以实现你需要的、对应C#中Enum.ToObject的功能,具体用法如下:

基础实现(匹配C#核心功能)

首先定义对应的枚举类,之后直接通过**枚举类(数值)**的方式就能获取到对应的枚举成员,和C#的效果一致:

import enum

class Types(enum.Enum):
    NONE = 0x01
    TRUE = 0x02
    FALSE = 0x03
    STRING_8 = 0x30  # 十六进制0x30对应十进制48

# 转换并输出枚举成员
print(Types(3))       # 输出:Types.FALSE
print(Types(48))      # 输出:Types.STRING_8

兼容未定义数值的场景

如果遇到二进制文件中存在枚举类未定义的数值,直接调用Types(数值)会抛出ValueError。要是需要和C#一样返回包含该数值的枚举实例(即使未在枚举中定义),可以封装一个简单的工具函数:

def enum_to_object(enum_cls, value):
    try:
        return enum_cls(value)
    except ValueError:
        # 创建伪成员,模拟C#中未定义枚举值的返回行为
        return enum_cls._create_pseudo_member_(value)

# 使用示例
print(enum_to_object(Types, 3))    # Types.FALSE
print(enum_to_object(Types, 99))   # Types.99(伪成员,包含未定义的数值)

在解析包含JSON数据的二进制文件时,你可以将读取到的字节数值传入上述方法,直接转换成枚举成员,方便后续的逻辑处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 06:35:26