📄 hex.cpp
字号:
#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
int tempdata[16];
int data[64];
int data_num=0;
int temp_out[4];
int data_out[16];
int out_number=0;
char chout;
char charToint(int n){
char rn;
if((n>=48)&&(n<=57))
rn='n'; //number
else{
if((n==97)||(n==65))
rn='a';
else{
if((n==98)||(n==66))
rn='b';
else{
if((n==99)||(n==67))
rn='c';
else{
if((n==100)||(n==68))
rn='d';
else{
if((n==101)||(n==69))
rn='e';
else{
if((n==102)||(n==70))
rn='f';
else
rn='w'; //wrong
}//else
}
}
}
}
}
return rn;
}//charToint
int judge(char sj){
int _rj;
char rj;
int _sj=int(sj);
rj=charToint(_sj);
switch(rj){
case 'n':
_rj=int(sj)-48;
break;
case 'a':
_rj=10;
break;
case 'b':
_rj=11;
break;
case 'c':
_rj=12;
break;
case 'd':
_rj=13;
break;
case 'e':
_rj=14;
break;
case 'f':
_rj=15;
break;
default:
_rj=100;
}//switch
return _rj;
}//judge
int HtoD(char str){
int ret;
ret=judge(str);
return ret;
}//HtoD
int BtoH(int* s,int num){
int ret=0;
ret=s[num-1]+s[num-2]*2+s[num-3]*4+s[num-4]*8;
return ret;
}//BtoDec
void DtoB(int s){
int temps=s;
int temp[4];
for(int i=0;i<4;i++){
temp[3-i]=temps%2;
temps=temps/2;
}//for
for(int j=0;j<4;j++){
data[data_num]=temp[j];
data_num++;
}//for
}//DtoB
void Bit_Out(){
int row_out=1;
cout<<"This is responde data:"<<endl;
for(int i=0;i<64;i++){
if(row_out<=8){
cout<<data[i]<<" ";
row_out++;
}//if
else{
cout<<endl;
row_out=1;
i--;
}//else
}//for
}//Bit_Out
int outjudge(int n){
int ret;
if((n>=0)&&(n<=9))
ret=0;
else{
ret=1;
switch(n){
case 10:
chout='a';
break;
case 11:
chout='b';
break;
case 12:
chout='c';
break;
case 13:
chout='d';
break;
case 14:
chout='e';
break;
default:
chout='f';
}//switch
}//else
return ret;
}//outjudge
void Hex_Out(){
int row_out=1;
for(int i=0;i<16;i++){
if(row_out<=2){
int jout=outjudge(data_out[i]);
if(jout==0) //0-9
cout<<data_out[i];
else
cout<<chout;
row_out++;
}//if
else{
row_out=1;
i--;
cout<<" ";
}//else
}//for
}//Hex_Out
void main()
{
clrscr();
int flag=1;
char ch[16];
while(flag==1){
cout<<"Please input number(hex):";
for(int i=0;i<16;i++)
cin>>ch[i];
cout<<"------------------------"<<endl;
int pos=0;
//number(Hex) change to number(Decimal)
for(i=0;i<16;i++){
tempdata[pos]=HtoD(ch[i]);
if(tempdata[pos]==100){
cout<<"Sorry! your input have wrong characters.please input again."<<endl;
break;
}//if
pos++;
if(i==15)
flag=0;
}//for
}//while
//number(Decimal change to number(Bit)
for(int i=0;i<16;i++){
DtoB(tempdata[i]);
}//for
Bit_Out();
int fenzu=0;
for(i=0;i<64;i++){
if(fenzu<4){
temp_out[fenzu]=data[i];
fenzu++;
if(i==63)
data_out[out_number]=BtoH(temp_out,4);
}//if
else{
//deal
data_out[out_number]=BtoH(temp_out,4);
out_number++;
//put the number to data_out and change to char()
fenzu=0;
i--;
}//else
}//for
cout<<endl;
cout<<"------------------"<<endl;
for(i=0;i<16;i++)
cout<<data_out[i]<<" ";
cout<<endl;
cout<<"------------------"<<endl;
Hex_Out();
getch();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -