从比特集读取比特值并传输到字节数组
reading bit values from bitset and transfering to byte array
我正在为GNSS轨道飞行器的校正数据构建RTCM SC104 v3.1消息。一旦我发现数据必须首先发送MSB(最高有效位而非字节),我就可以毫不费力地构建几条固定长度的消息。然而,对于一些可变长度的消息,构建一个位集,然后复制到一组字节数似乎是最简单的。我的问题是,字节输出最终都是0x00,而我可以将似乎正在正确构建的位集定制到控制台。通过该标准传输的数据必须首先进行调节,因为每个数据类型只允许发送所允许的最大值所需的位数。例如,64位浮点必须乘以10的幂以保持精度,然后转换为32位的整数。从这27个比特可以被传输到msb第一模式中的消息比特串。然而,有些消息为每个轨道器添加9.25字节,而有些消息可能为每个轨道机添加79比特。在最后一个字节之前不允许填充零。所以我在设置比特的时候就在数比特的数量。然后处理数组中承载所有位所需的字节数。我只是似乎没有得到字节的1。因此,我用良好的数据填充每个通道的比特集,比如这段代码:
for(int varPos = 5; varPos > -1; varPos --) //start on 0, end on 5
{
data_1002.set(bitPos, (datastream[baseNumber].channel[n].satID & (1<<varPos))); //test bit
bitPos++;
}
data_1002.set(bitPos,1);
bitPos++;
for(int varPos = 23; varPos > -1; varPos --) //start on 0, end on 5
{
data_1002.set(bitPos, (codeRange & (1<<varPos))); //test bit
bitPos++;
}
for(int varPos = 19; varPos > -1; varPos --) //start on 0, end on 5
{
data_1002.set(bitPos, (difference & (1<<varPos))); //test bit
bitPos++;
}
for(int varPos = 6; varPos > -1; varPos --) //start on 0, end on 5
{
data_1002.set(bitPos, (lockInd & (1<<varPos))); //test bit
bitPos++;
}
然后尝试像这样填充数组:
noBytes = (bitPos+7)/8; //number of data bytes to copy to array
if(noBytes <=0)
{
noBytes = 0;
}
cout << "no bytes to build " << noBytes << endl;
for(int w=0; w<noBytes; w++)
{
for(int q=0; q<8; q++)
{
if(data_1002[bitPos+q] == true)
{
data = data | (1<<q);
}
else
{
data = data & (0xFF & (0<<q));
}
}
bitPos = bitPos +8;
output += data;
cout << "data byte is ";
cout << data << endl;;
data = 0;
}
我还尝试过测试位集[position]==1,也尝试过"1",但没有更改。在某个地方我搞砸了,但我不确定我是没有读取位集还是没有正确写入字节。请帮忙。
错误在中
data = data & (0xFF & (0<<q));
如果你注意,0 << q
总是零;下面是一些位AND,所以所有的结果都是零。
试试这个:
data = data & ~(1<<q));
或者只删除else
部分,因为data
每次在外循环周围都为零。
相关文章:
- 如何将图像传输到c++(dll)中的缓冲区,然后在c#的缓冲区中读/写
- 从服务器传输到客户端的消息不会出现
- 将相机数据从服务器实时流式传输到客户端
- 如何从网站获取数据并将其传输到数据库?
- 使用 swig 追加到字节数组
- 使用蓝牙组件将数据从Android手机传输到串行设备时出现问题
- 如何通过ROS将realsense数据传输到其他设备
- 将音频从浏览器流式传输到WebRTC本机C++应用程序
- 将FFMpeg AVFrame对象从C++应用程序流式传输到Python的最佳方法?
- 在不损失精度的情况下将double从C++传输到python
- Ascii .txt文件到字节数组 - C++
- 只需要帮助启动从 c++/c 传输到 mips 的程序
- 转换 mp4 文件并将其流式传输到带有树莓派的查看器
- 我无法将数据从数据网格列传输到 C# 中的数组以获取文本框建议收集数据
- 如何将键和值从映射传输到另一个映射?
- 如何将字节从 std::ostream 流式传输到 std::vector<uint8_t>?
- 将 cv::Mat 存储在字节数组中,以便将数据传输到服务器
- 从比特集读取比特值并传输到字节数组
- 将文件从客户端传输到服务器时缺少字节,字节值也表示一些控制字符
- JNI-从jstring到字节的传输,从字节到字符串的传输问题