bit-packing相关内容
我有 8 个 bool 变量,我想将它们“合并"成一个字节. 有没有简单/首选的方法来做到这一点? 反过来,将一个字节解码为 8 个独立的布尔值怎么样? 我进来假设这不是一个不合理的问题,但由于我无法通过 Google 找到相关文档,这可能是另一种“你的直觉都错了"的案例. 解决方案 艰难的路: unsigned char ToByte(bool b[8]){无符号字符
..
为了澄清我的问题,让我们从一个示例程序开始: #include #pragma 包(推,1)结构cc{无符号整数 a : 3;无符号整数 b : 16;无符号整数 c : 1;无符号整数 d : 1;无符号整数:1;无符号整数 f : 1;无符号整数 g : 1;无符号整数 h : 1;无符号整数 i : 6;无符号整数 j : 6;无符号整数 k : 4;无符号整数 l:15;};#pragm
..
在代码审查期间,我遇到了一些定义如下简单结构的代码: class foo {无符号字符 a;无符号字符 b;无符号字符 c;} 在其他地方,定义了这些对象的数组: foo listOfFoos[SOME_NUM]; 稍后,这些结构被原始复制到缓冲区中: memcpy(pBuff,listOfFoos,3*SOME_NUM); 此代码依赖于以下假设:a.) foo 的大小为 3,并且没有
..
我有一个指定如下的结构 成员 1,16 位 成员 2,32 位 成员 3,32 位 我将从文件中读取.我想直接从文件读入结构. 问题是 C 编译器会将变量 m1、m2 和 m3 与 32 位的字边界对齐,因为我正在为以下结构声明使用 ARM Cortex M3: typedef 结构体{uint16_t m1;uint32_t m2;uint32_t m3;}某物; 直接
..
在下面的示例中,我希望 complex_t 的大小与 uint16_t 相同:2个字节,但是这是3个字节。 删除第二个联合(“ proximity_unsafe”)可将大小减小到2个字节,但我无法弄清楚打包规则的模型。 #include #include typedef union { uint16_t不安全; struct
..
我希望将32位值的位0、8、16、24分别移动到位0、1、2、3.输入和输出中的所有其他位将为零. 很明显,我可以这样: c = c>>21 + c>>14 + c>>7 + c; c &= 0xF; 但是有没有一种更快的(更少的说明)方式? 解决方案 c = (((c&BITS_0_8_16_24) * BITS_0_7_14_21) >> 21) & 0xF; 或者
..
我有8个bool变量,我想将它们“合并"为一个字节. 是否有一种简单/首选的方法来做到这一点? 反过来,将一个字节解码为8个独立的布尔值又如何呢? 我假设这不是一个不合理的问题,但是由于我无法通过Google找到相关文档,因此这可能是“您的直觉都不正确"的另一种情况. 解决方案 困难的方法: unsigned char ToByte(bool b[8]) {
..
我正在尝试在C#中优化解析器组合器.当序列化的格式与内存中的格式匹配时,一种可能的优化方法是对一个实例甚至该类型的多个实例进行(不安全的)内存解析. 我想编写确定内存中格式是否与序列化格式匹配的代码,以便动态确定是否可以应用优化. (显然,这是一个不安全的优化,由于种种微妙的原因,它可能无法正常工作.我只是在做实验,而不打算在生产代码中使用它.) 我使用属性 [StructLayout
..
我有一个文本字段,可以用英文和中文键入短信.正如我搜索过的,1个短信只能有1120位.每个英文字符为7位,因此可以为1120/7 = 160个字符;对于中文,每个字符为16位,因此为1120/16 = 70个字符.我需要使用jquery来显示文字字段和文本字段下剩余的单词.我该怎么做呢? 解决方案 字符可以是单字节,双字节,三字节等.所以单字节遵循一个特定的范围.其他字符也是如此.基于此,
..
我想将一些二进制图像数据编码/压缩为序列(如果有位). (通常,此序列的长度不能完全符合整数的标准整数类型.) 如何在不浪费空间的情况下做到这一点? (我意识到,除非位序列的长度为"nice",否则在末尾总是必须有少量[ FWIW,我估计每个要编码的符号最多需要3位. Python是否有用于此类工作的内置工具? 解决方案 虽然内置的内容并不十分方便,但是有第三方模块,例如 bits
..
低级别位操作从来都不是我的强项。我将非常感谢理解以下bitwise运算符的用例.Consider ... int age,gender,height, packed_info; 。 。 。 //分配值 //使用班次包装为AAAAAAA G HHHHHHH并且“或” packed_info =(age
..
我有一个字节数组,其中每个字节是0或1.现在我想把这些值装入位,使8个原始字节占用1个目标字节,原始字节0进入位0,字节1进入位1等。 到目前为止,我在内核中有以下内容: const uint16_t tid = threadIdx.x ; __shared__ uint8_t packing [cBlockSize]; // ...计算包装中的原始字节[tid] __s
..
在代码审查期间,我遇到了一些定义了如下简单结构的代码: class foo { unsigned char a; unsigned char b; unsigned char c; } 在其他地方,定义了这些对象的数组: foo listOfFoos [SOME_NUM]; 然后,将结构原始复制到缓冲区中: memcpy(
..
为了澄清我的问题,让我们从一个示例程序开始: #include #pragma pack(push,1) struct cc { unsigned int a:3; unsigned int b:16; unsigned int c:1; unsigned int d:1; unsigned int e:1; unsigned int f
..
我有一个整数数组,让我们假设他们是类型中的int64_t 。现在,我知道,只有每首每个整数n个位是有意义的(即,我知道他们是由一些边界限制)。 什么是数组转换中,所有不必要的空间被删除的方式(最有效的方式就是我在 A [0] ,第二个是第一个整数逐一 A [0] + n位等)? 我想它是一般尽可能多的,因为 N 会时常发生变化的时候,虽然我想有可能是特定的智能优化 N 象2或某事的权力。 当
..
我做的一类PackedUnsigned1616存储两个无符号短裤在一个int和存储两个有符号短裤在一个int类型的类PackedSigned1616。我读了关于位操作,但我仍然对如何处理与困惑签名和未签名,并且是短的范围或大或小的值(它们被传递两个整数)。下面是我到目前为止有: 公共final类PackedUnsigned1616 { 公众最终诠释场;私有静态最终诠释RIGHT =(2';&LT
..
是否有C#库,允许类似的功能Python的结构从的标准库? 一个可以与真正的对准结构颇有渊源模拟结构库。但我没有找到还没有任何办法直接控制在C#中的字节序的结构(C#中的结构似乎更适合于COM互操作,并减少对通用二进制包装)。 解决方案 该最接近的很可能是使用
..