好的,假设我有一个名为 的布尔数组bits
和一个名为cursor
我知道我可以使用 访问各个位bits[cursor]
,并且我可以使用位逻辑从 获取更大的数据类型bits
,例如:
short result = (bits[cursor] << 3) |
(bits[cursor+1] << 2) |
(bits[cursor+2] << 1) |
bits[cursor+3];
但是,当读取较大的类型(如 int32 和 int64)时,这将导致代码行和代码行。
是否可以进行某种类型的演员表并达到相同的结果?在这种情况下,我根本不关心安全性(这些函数将被包装到一个处理该问题的类中)
假设我想得到一个uint64_t
out bits
,从 指定的任意地址开始cursor
,whencursor
不一定是 64 的倍数;这可以通过演员表吗?我以为这个
uint64_t result = (uint64_t *)(bits + cursor)[0];
会工作,但它不想编译。
抱歉,我知道这是一个愚蠢的问题,我对指针数学非常缺乏经验。我不只是在寻找一个简短的解决方案,如果有人愿意的话,我也在寻找语法的细分。
谢谢!