不进位计算器

// checksum.cpp : Defines the entry point for the console application.
//


#include "stdafx.h"
#include <stdlib.h>
#include <memory.h>
#include <string.h>
typedef  unsigned char BYTE;
typedef struct num{
BYTE first;
BYTE second;
BYTE third;
BYTE fourth;
}number;


BYTE checkSum_Byte(BYTE num1,BYTE num2);
number checksum(number num1,number num2);
number separate_num(int temp);
FILE *fstream1;
char* getOneLine(FILE * fp,unsigned int *size);
int main(int argc, char* argv[])
{
number sum={0,0,0,0},num2;
int temp=0;
char Buffer[1024];
memset(Buffer,0,sizeof(Buffer)/sizeof(Buffer[0]));
printf("start calcuate cheksum value,press \"ffff\" exit\n");
fstream1=fopen("1.data","r");

//if (fstream1==NULL)
//{
//printf("can not find 1.data!\r\n");
//return 0;
//}
// getOneLine(fstream1,0);


while(1)
{
// scanf("%x %x",&temp1,&temp);
scanf("%x",&temp);
if (temp==0x0000)

{

printf("please input no zero number!\n");

return 0;
}
num2=separate_num(temp);
sum=checksum(sum,num2);
printf("sum value: %x%x%x%x\n",sum.fourth,sum.third,sum.second,sum.first);
}
return 0;
}


number separate_num(int temp)
{
number num;
num.first=temp & 0xf;
num.second=(temp>>4)& 0xf;
num.third=(temp>>8)& 0xf;
num.fourth=(temp>>12)& 0xf;
return num;
}


BYTE checkSum_Byte(BYTE num1,BYTE num2)
{

BYTE sum=0;
sum=(num1+num2)%16;
return sum;
}


number checksum(number num1,number num2)
{
unsigned int sum=0;
num1.first=checkSum_Byte(num1.first,num2.first);
num1.second=checkSum_Byte(num1.second,num2.second);
num1.third=checkSum_Byte(num1.third,num2.third);
num1.fourth=checkSum_Byte(num1.fourth,num2.fourth);
//sum=num1.first+(num1.second<<4)+(num1.third<<8)+(num1.fourth<<12);
return num1;

}


char* getOneLine(FILE * fp,unsigned int *size)
{
char Buffer[1024],*rBuffer[1024];
int count;
memset(Buffer,0,1024);
memset(Buffer,0,1024);
size=0;
count=0;
fread( Buffer,sizeof(char),1024,fp);
int j=0;
for (unsigned int i=0;i<strlen(Buffer);i++)
{
if (Buffer[i]==0xD && Buffer[i+1]==0xA)
{
char* temp;
rBuffer[j]=temp;
j++;
}
}



return Buffer;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值