【发布时间】:2020-11-01 16:34:50
【问题描述】:
我正在寻找如何解析长二进制数据的想法,例如:“10100011111000111001” 位:0-4 是 id 位 5-15 是数据 等等等等……
二进制数据结构可以改变,所以我需要建立一个数据库来存储数据如何解析每个字符串。
想法如何实现? 谢谢
编辑
我在这里错过了什么?
struct Bitfield {
uint16_t a : 10 , b:6;};
void diag(){
uint16_t t= 61455;
struct Bitfield test = {t};
cout<<"a: "<<test.a<<endl;
cout<<"b: "<<test.b<<endl;
return;}
输出是:
a: 15
b: 0
【问题讨论】:
-
实现它的最佳方式是什么? -- 没有“最佳方式”,因为这是非常主观的。只有“方法”。
-
可能是
std::bitset,虽然它缺少一些便利功能 -
你真的把那个叫做长二进制序列?!!它只有 16 位。它甚至可以放入
int!请告诉我们更多关于您希望对该数据施加的约束,包括序列的最大长度。 -
数据从何而来?它存储在字节数组中还是作为字节iostream?位是如何编号的?位如何从一个字节跨越到另一个字节?您必须对问题给出更准确的说明。
-
它只是一串“1”和“0”,它不是字节数据,只是比特流
标签: c++ parsing binary bit-manipulation