任意长度字符串转化为16位定长的数(类似加密)

来源:互联网 发布:数据存储解决方案 nas 编辑:程序博客网 时间:2024/06/05 13:22

如一个数a,不足16位补0,

a的ascii 97 转化为   9+7=16大于9   转化为1+6=7  

0的ascii 48 转化为4+8=12大于9  转化为1+2=3

其他数类似




#include<stdio.h>#include<string.h>#include<stdlib.h>int main(){char s[100]="a";//定义任意长度字符串int s1[16];int len,n,a,cha,num,k=0,i,j;len=strlen(s);//求出长度n=len/16;if(n*16!=len){cha=(n+1)*16-len;}printf("需要加密的字符串为a\n");printf("需要求的字符串长度=%d,与16位数的差%d\n",len,cha);for(i=0;i<cha;i++)//不足在后面追加0strcat(s,"0");for(i=0;i<16;i++){num=0;for(j=0;j<n+1;j++){num=num+s[n*j+i];}//printf("%d\n",num);while(num>9)//如果数大于9,需要重新组合{a=0;while(num!=0){a=a+num%10;num=num/10;}num=a;}s1[i]=num;}printf("加密后为\n");for(i=0;i<16;i++)//输出这个16位的数printf("%2d",s1[i]);printf("\n");return 0;}


阅读全文
0 0
原创粉丝点击