首页 > 编程语言 >二进制CRC校验码生成程序

二进制CRC校验码生成程序

时间:2023-08-21 12:39:16浏览次数:48  
标签:二进制 void LEN 校验码 char CRC int printf


 

 

/**二进制CRC序列生成程序*/
#include<stdio.h>
#include<string.h>
#define LEN_DIVIDEND 30
#define LEN_DIVISOR 30
#define LEN_SEQUENCE LEN_DIVIDEND+LEN_DIVISOR
void CRC(char*,char*,char*);
void MOD2_div(char*,char*,char*);
void move(char *,int);
int main(){
    char dividend[LEN_DIVIDEND];//被除数
    char divisor[LEN_DIVISOR];//除数
    char sequence[LEN_SEQUENCE];//CRC序列

    freopen("in.txt","r",stdin);
    printf("请输入源序列:");
    scanf("%s",dividend);printf("%s\n",dividend);

    printf("请输入检验码:");
    scanf("%s",divisor);printf("%s\n",divisor);

    CRC(dividend,divisor,sequence);
    return 0;
}
void move(char *FCS,int len){
    int i;
    char c=FCS[0];
    for(i=0;i<len-1;i++){
        FCS[i]=FCS[i+1];
    }
    FCS[i]=c;
}
void MOD2_div(char *dividend,char *divisor,char *FCS){
    int len_dividend=strlen(dividend);
    int len_divisor=strlen(divisor);
    int len_FCS=len_divisor-1;
    int i,j;
    for(i=0;i<len_divisor;i++)
        FCS[i]=dividend[i];
    FCS[len_divisor]=0;
    printf("dividend=%s\n",dividend);
    printf("divisor=%s\n",divisor);
    printf("------------\n");
    for(i=len_divisor;i<len_dividend+1;i++){
        if(FCS[0]=='0'){
            move(FCS,len_divisor);
            FCS[len_divisor-1]=dividend[i];
            continue;
        }
        for(j=0;j<len_divisor;j++){
            FCS[j]=(dividend[i-len_divisor+j]+divisor[j]-96)%2+48;
        }
        move(FCS,len_divisor);FCS[len_divisor-1]=dividend[i];
        //FCS[j-1]=dividend[i];
        printf("%s\n",FCS);
    }
    printf("------------\n");

    FCS[len_divisor-1]=0;
}
void CRC(char *dividend,char *divisor,char *sequence){
    char FCS[LEN_DIVISOR];
    int len_FCS=strlen(divisor)-1;
    int i;
    strcpy(sequence,dividend);
    for(i=0;i<len_FCS;i++){
        strcat(dividend,"0");
    }
    MOD2_div(dividend,divisor,FCS);
    strcat(sequence,FCS);
    printf("FCS=%s\n",FCS);
    printf("sequence=%s\n",sequence);
}

 

标签:二进制,void,LEN,校验码,char,CRC,int,printf
From: https://blog.51cto.com/u_10101161/7173500

相关文章

  • 以二进制文件安装K8S之高可用部署架构
    在Kubernetes系统中,Master节点扮演着总控中心的角色,通过不间断地与各个工作节点(Node)通信来维护整个集群的健康工作状态,集群中各资源对象的状态则被保存在etcd数据库中。在正式环境中应确保Master的高可用,并启用安全访问机制,至少包括以下几方面。Master的kube-apiserver、kube-c......
  • 以二进制文件安装K8S之创建CA根证书
    为etcd和Kubernetes服务启用基于CA认证的安全机制,需要CA证书进行配置。如果组织能够提供统一的CA认证中心,则直接使用组织颁发的CA证书即可。如果没有统一的CA认证中心,则可以通过颁发自签名的CA证书来完成安全配置。如下以通过颁发自签名的CA证书来完成安全配置。etcd和Kubernet......
  • 以二进制文件安装K8S之环境准备
    为了k8s集群能正常运行,需要先完成4项准备工作:1.关闭防火墙2.禁用SeLinux3.关闭Swap4.安装Docker关闭防火墙#查看防火墙状态getenforce#关闭防火墙,禁用防火墙开机自启动systemctlstopfirewalldsystemctldisablefirewalld禁用SeLinux#临时禁用SeLinux,重启失效......
  • 以二进制文件安装K8S之部署etcd高可用集群
    概述前提条件:已经准备好CA根证书(etcd在制作CA证书时需要CA根证书),并且把CA根证书文件ca.key和ca.crt拷贝到3个etcd节点的/etc/kubernetes/pki目录下。3台主机的IP地址分别为192.168.3.135、192.168.3.136、192.168.3.137。要安装的etcd版本:v3.4.13-linux-amd64。安装etcd下载e......
  • 以二进制文件安装K8S之部署Master高可用集群
    如下以二进制文件方式部署安全的KubernetesMaster高可用集群,具体步骤如下:1.下载Kubernetes服务的二进制文件2.部署kube-apiserver服务3.创建客户端CA证书4.创建客户端连接kube-apiserver服务所需的kubeconfig配置文件5.部署kube-controller-manager服务6.部署kube-schedule......
  • 详解二进制,八进制,十进制,十六进制的原理与转换
    首先了解一下数字系统的由来数字系统是人类为了表示数量和进行计数而创造的一种工具。数字系统的发展可以追溯到古代文明,不同的文化和社会在不同的时间和地点创造了各种数字系统。以下是数字系统的一些关键发展阶段: 早期计数:最早的人类社会使用自然物体如石块、棍子、贝壳等......
  • Python练习:输入一个整数,输出该数二进制表示中1的个数。
      Python3整数对象存储为无符号数加上符号位标志,所以不存在“负数”补码形式,因此,计算“1”的数量需要按去符号后的无符号数:cnt=bin(n).count('1')另外,Python3无长整,整数长度原则上不限,所以不能以假定的32位处理。    补码+原码=2**321#-*-coding:ut......
  • 打印二进制的奇数位和偶数位
    voidprint(inta){ inti=0; printf("奇数位:"); for(i=30;i>=0;i-=2) { printf("%d",(a>>i)&1); } printf("\n"); printf("偶数位:"); for(i=31;i>=1;i-=2) { printf("%d",(a>>i)&......
  • [kubernetes]二进制部署k8s集群-基于containerd
    0.前言k8s从1.24版本开始不再直接支持docker,但可以自行调整相关配置,实现1.24版本后的k8s还能调用docker。其实docker自身也是调用containerd,与其k8s通过docker再调用containerd,不如k8s直接调用containerd,以减少性能损耗。除了containerd,比较流行的容器运行时还有podman,但是podm......
  • 190. 颠倒二进制位
    颠倒给定的32位无符号整数的二进制位。提示:请注意,在某些语言(如Java)中,没有无符号整数类型。在这种情况下,输入和输出都将被指定为有符号整数类型,并且不应影响您的实现,因为无论整数是有符号的还是无符号的,其内部的二进制表示形式都是相同的。在Java中,编译器使用二进制补码记法来......