c语言寻找比特为1的位置,寻找字符数组中特定的一对比特'10'或'01'

该博客讨论了如何在C语言中处理包含网络数据包的字符数组,寻找特定比特对'01'或'10'。作者分享了目前的实现代码,使用掩码和移位操作,但寻求更简洁或优化的方法。博客内容涉及到位操作、循环检查以及可能的结构体解决方案。
摘要由CSDN通过智能技术生成

这可能是一个稍微理论化的问题.我有一个包含网络数据包的char字节数组.我想检查每66位特定位对('01'或'10')的出现.也就是说,一旦我找到第一对位,我就必须跳过66位并再次检查是否存在相同的位.我正在尝试用掩码和移位来实现一个程序,这有点变得复杂.我想知道是否有人可以提出更好的方法来做同样的事情.

到目前为止我写的代码看起来像这样.但它并不完整.

test_sync_bits(char *rec, int len)

{

uint8_t target_byte = 0;

int offset = 0;

int save_offset = 0;

uint8_t *pload = (uint8_t*)(rec + 24);

uint8_t seed_mask = 0xc0;

uint8_t seed_shift = 6;

uint8_t value = 0;

uint8_t found_sync = 0;

const uint8_t sync_bit_spacing = 66;

/*hunt for the first '10' or '01' combination.*/

target_byte = *(uint8_t*)(pload + offset);

/*Get all combinations of two bits from target byte.*/

while(seed_shift)

{

value = ((target_byte & seed_mask) >> seed_shift);

if((value ==

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值