【发布时间】:2012-03-19 11:49:08
【问题描述】:
我需要实现某种位到状态的映射,但我不知道如何实现这个东西 - 也许我有一个笨蛋;)
好的,所以我有一个可以最大的状态码。 32 位长,例如 1001 0011
每个位都属于一个特殊的状态码——字符串。
例如:
Bit 1: String Cancel
Bit 2: String Okay
Bit 3: String Save
....
Bit 32: String Next
现在我必须确定设置了哪些位并返回所有状态代码 - 设置为 32 位长状态的字符串。
我更喜欢某种字典或 sumthin 之类的,我可以为每个位存储相应的状态代码。
然后我喜欢循环通过 32 位长状态码并从字典中获取相应的状态码字符串 - 将其存储在字符串中并在循环通过 32 位长状态码后返回。
有人对此有想法吗?
【问题讨论】:
-
@wiero:将此作为答案发布,因为这是正确的方法。
-
@DanielHilgarth - 你真的有超过一百万条不同的状态信息吗? 32位似乎有点矫枉过正。如果您有超过 256 条不同的状态消息,至少我对这个主题的看法是,您做错了什么。甚至有办法将 2 个字节扩展为超过 256 条消息。
-
@Ramhound:我假设你想向 OP 提出这个问题,而不是我......但是使用 32 位整数,你会得到 32 条不同的状态消息,如果每个位代表一个状态消息为由 OP 定义:如果设置了位 1,则为状态消息 1。如果设置了位 2,则为状态消息 2,依此类推。当然,您可以组合这些位,但仍然只有 32 种不同的状态消息。这些状态消息只有 2^32 种不同的组合...
-
您好,Daniel H. 在正确的轨道上。每个位都代表一个状态 - 代码/字符串/消息 - 随心所欲地调用它。如果设置了两位,则不会导致这两位之和的新状态代码。它导致返回两个状态代码字符串。