31得票8回答
使用位运算符处理标志位

我有四个标志Current = 0x1 Past = 0x2 Future = 0x4 All = 0x7 假设我收到了两个标志Past和Future (setFlags(PAST | FUTURE)),怎么判断Past是否在其中?同样地,如何判断Current不在其中?这样我就不...

28得票4回答
当int64_t更改为int32_t时,为什么类大小会增加?

在我的第一个例子中,我使用了两个int64_t位域。当我编译并获取类的大小时,得到的大小为8。class Test { int64_t first : 40; int64_t second : 24; }; int main() { std::cout <&lt...

27得票2回答
在C语言结构体中使用压缩位域 - GCC

我正在Linux上使用C语言中的结构体。我开始使用位域和“packed”属性,但我遇到了奇怪的行为:struct __attribute__((packed)) { int a:12; int b:32; int c:4; } t1; struct __attribu...

26得票4回答
GCC抑制警告“too small to hold all values of”

我需要使用作用域枚举,以便将它们作为特定类型传递给我们的串行器。 我已为Enum1的枚举成员提供了明确的整数值。 我已经将符合上述描述的两个作用域枚举放入位域中enum class Enum1 { value1 = 0x0, value2 = 0x1, value3 ...

26得票2回答
在Python中进行位域操作的最佳方法是什么?

我正在阅读一些通过UDP传输的MPEG传送流协议,并且它包含了一些奇怪的位字段(例如长度为13)。我正在使用“struct”库进行广义解包,但是否有一种简单的方法来说“获取接下来的13个位”,而不必手动调整位操作?我想要像C语言处理位字段的方式那样做(而不必退回到C语言)。 有什么建议吗?

26得票4回答
如何在Delphi记录中模拟位域?

我希望在Delphi中声明一个记录(record),其布局与C语言中的一样。对于那些感兴趣的人:这个记录是Windows操作系统LDT_ENTRY记录中的一个联合体的一部分。(我需要在Delphi中使用这个记录,因为我正在使用Delphi开发Xbox模拟器——请参见sourceforge上的D...

25得票6回答
是否有C++位域的便携式替代方案?

在许多情况下(尤其是在低级编程中),数据的二进制布局非常重要,例如:硬件/驱动程序操作、网络协议等。 在C++中,我可以使用 char* 和按位运算(掩码和移位) 来读取 / 写入任意二进制结构,但这很繁琐且容易出错。显然,我会尽量限制这些操作的作用域并将它们封装在更高级别的API中,但这仍...

23得票5回答
C语言 - 无法获取位域的地址

为什么不能取位域的地址? 我如何创建一个指向位域的指针? 以下是代码...struct bitfield { unsigned int a: 1; unsigned int b: 1; unsigned int c: 1; unsigned int d: 1...

23得票4回答
如何在Core Data中使用二进制标志?

我在Core Data数据库中有一个int32属性。 我将这个int用作enum的位字段。 是否可以创建一个NSPredicate,根据此int的二进制值查询项目?例如@"bitFieldAttribute & 0x0001"? 我还想知道是否可以使用二进制类型的属性实现这一点?

22得票6回答
将整数转换为位字段列表

我已经创建了一个将int转换为位字段(以列表形式)的方法,并且它可以工作,但我相信还有更优雅的解决方案-我一直在盯着它看了太久。 我很好奇,您会如何将int转换为在list中表示的位字段?def get(self): results = [] results.append(...