c语言转java_一段C语言程序转换为java的写法谢谢!

/*----------------------------------------------------------------------------函数名称:计算票面信息校验码描述:将给出的字符串经过运算生成四位数字校验码参数:input_str原字...

/*----------------------------------------------------------------------------

函数名称: 计算票面信息校验码

描述: 将给出的字符串经过运算生成四位数字校验码

参数:

input_str 原字符串

返回值:

生成的校验码

-----------------------------------------------------------------------------*/

#include

#include

#include

char* calculateBillMac(char* input_str)

{

int input_len=strlen(input_str); //计算输入字符串长度

char* ascii_buff = (char*)malloc(10); //申请存储ASCII码的内存

char* str_buff_8 =(char*)malloc(1000); //申请存储八进制数字串的内存空间

char* str_buff_10 = (char*)malloc(1000);//申请存储十进制数字串的内存空间

char* str_return =(char*)malloc(10); //申请返回值内存空间

int i,len_8,len_10;

long sum8_1=0,sum8_2=0,sum10_1=0,sum10_2=0;//分别存储八进制和十进制不同算法取值的合计

//初始化内存空间

memset(ascii_buff,0,10);

memset(str_buff_8,0,1000);

memset(str_buff_10,0,1000);

memset(str_return,0,10);

for(i=0 ;i < input_len;i++){//对输入字符串的每一个字节进行循环

sprintf(ascii_buff,"%o",(unsigned char)input_str[i]); //将ASCII码值转换成八进制字符串

strcat(str_buff_8,ascii_buff); //所有八进制ASCII串连接

sprintf(ascii_buff,"%d",(unsigned char)input_str[i]); //将ASCII码值转换成十进制字符串

strcat(str_buff_10,ascii_buff); //所有十进制ASCII串连接

}

len_8= strlen(str_buff_8); //八进制字符串总长度

len_10 = strlen(str_buff_10); //十进制字符串总长度

//将八进制字符串的每一个字符转换成数字,并分别按照正序和反序乘以所在的位置序号

//例如:八进制串为 3452170467

// sum8_1 = 3*1 + 4*2 + 5*3 + 2*4 + 1*5 + ....

// sum8_2 = 7*1 + 6*2 + 4*3 + 0*4 + 7*5 + ....

for(i=1;i<=len_8;i++){

sum8_1 += (str_buff_8[i - 1] - '0')*i;

sum8_2 += (str_buff_8[len_8 - i] - '0')*i;

}

//将十进制字符串的每一个字符转换成数字,并分别按照正序和反序乘以所在的位置序号

for(i=1;i<=len_10;i++){

sum10_1 += (str_buff_10[i - 1] - '0')*i;

sum10_2 += (str_buff_10[len_10 - i] - '0')*i;

}

//释放申请的内存空间

free(str_buff_8);

free(str_buff_10);

free(ascii_buff);

sprintf(str_return,"%d%d%d%d",sum8_1%10,sum8_2%10,sum10_1%10,sum10_2%10);

return str_return;

}

谢谢 给个思路也行,主要是对C语言不熟悉

展开

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值