计算机网络位填充技术(0插入删除技术)

0插入删除技术

位填充简单来说是指用“0”或“1”来填充数据未使用的二进制位。

例如,1是整数型数据,在计算机中,内存为1分配了32个位内存大小,实际 上1只占据一个位,为了使1被识别是整数型数据,剩余位就要采用位填充的方法进行填充。在计算机网络中,位填充也称为比特填充。

具体作法是**发送端在发送所有信息(除标志字节外)时,只要遇到连续5个"1",就自动插入一个"0"当接收端在接收数据时(除标志字节)如果连续接收到5个"1",就自动将其后的一个"0"删除,**以恢复信息的原有形式。

这种"o"位的插入和删除过程是由硬件自动完成的,比上述面向字符的"数据透明"容易实现。复合站既发送命令和响应,也接收来自另一个符合站的命令和响应。

例:HDLC协议从高层接收的比特块为011111011101101011110110试按照位填充算法写出填充后在数据帧中对应于该比特块的输出。
则填充后的结果为:0111110011101101011110110

  • 12
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
字节填充算法也称为字节填充法,其作用是为了实现数据的差错控制和数据保护,主要用于数据传输中的差错检测与恢复。 具体实现过程如下: 1. 输入原始数据,以数组形式存储。 2. 计算原始数据的长度,若长度为n,则需要添加k个字节,使数据长度为n+k,其中k为填充字节的数量,满足(n+k)%m=0,其中m为字节填充长度(通常为4)。 3. 若需要填充k个字节,则将k个字节的值全部设为0x00。 4. 将填充后的数据按照字节填充长度m进行分组,每组m个字节,计算每组字节的和,然后将和值存放在最后一个字节中。 5. 输出填充后的数据。 下面是代码实现: ```c #include <stdio.h> #include <stdlib.h> #define BYTE_FILL 4 //字节填充长度 int main() { unsigned char data[128]; //原始数据数组 unsigned char padded[128]; //填充后的数据数组 int len, pad_len, i, j, sum; //数据长度,填充字节数,循环计数器,字节和 printf("请输入原始数据的十六进制序列(以空格隔开),最多输入128个字节:\n"); len = 0; while (scanf("%hhx", &data[len]) == 1) { len++; if (len >= 128) { break; } } printf("原始数据长度为 %d 个字节:\n", len); for (i = 0; i < len; i++) { printf("%02x ", data[i]); } printf("\n"); pad_len = BYTE_FILL - (len % BYTE_FILL); //计算填充字节数 printf("需要填充 %d 个字节:\n", pad_len); for (i = 0; i < pad_len; i++) { padded[len + i] = 0x00; //填充字节全部设为0x00 } len += pad_len; //更新填充后的数据长度 for (i = 0; i < len; i += BYTE_FILL) { //按照字节填充长度进行分组 sum = 0; for (j = 0; j < BYTE_FILL; j++) { sum += padded[i + j]; } padded[i + BYTE_FILL - 1] = sum & 0xff; //将字节和存放在最后一个字节中 } printf("填充后的数据长度为 %d 个字节:\n", len); for (i = 0; i < len; i++) { printf("%02x ", padded[i]); } printf("\n"); return 0; } ``` 该程序可以读入以空格隔开的十六进制数据,输出填充后的数据以及各个字节的值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值