需求
将一个不定长的字符串转换为一个定长的数字
输入:字符串
输出:16位数字
转换格式:将字符串分成n组,每组16个字符
将n组字符串相应位置的字符相加,如果值不是个数,则各个位再进行相加
直到为个位数为止,最终得出的16个数字即要求输出的数字
C实现方案
#include <stdio.h>
/************************************************************
功能:
将一个不定长的字符串转换为一个定长16位数字
参数:
[in]str : 要加密的字符串
[in][out]res : 将加密后结果存储输出
[in]is_show : 0不打印结果,非0打印结果
返回值:
成功返回0 不成功返回-1
************************************************************/
int Code(char *str,int res[],int is_show)
{
if(NULL == str || NULL == res)
return -1;
char *p = str;
int str_len = 0;
while(*p++)
str_len++;
printf("%d\n",str_len);
int group_num = str_len%16==0 ? str_len/16 : str_len/16+1;
printf("%d\n",group_num);
int i,j;
for(i=0;i<16;i++)
{
for(j=0;j<group_num;j++)
{
res[i] += str[i+16*j]%10;
res[i] %= 10;
}
if(is_show)
{
printf("%d ",res[i]);
}
}
return 0;
}
//测试主函数
int main()
{
char buf[100]={'\0'};
int res[16] = {0};
scanf("%s",buf);
Code(buf,res,0);
return 0;
}