-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathhex_to_base64.c
65 lines (53 loc) · 1.5 KB
/
hex_to_base64.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include<stdio.h>
#include<stdlib.h>
int main() {
char base[64]={
'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z',
'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',
'0','1','2','3','4','5','6','7','8','9','+','/'};
int count = 0;
char *input = 0;
char ch;
do {
scanf("%c",&ch);
input=(char*)realloc(input,count);
input[count++]=ch;
}while(ch!='\n');
int input_n[count];
int n=count-1;
for(int i=0;i<n;i++){
printf("%c",input[i]);
if(input[i]<='9'&&input>='0'){
input_n[i]=input[i]-'0';
}else{
input_n[i]=input[i]-'7';
}
}
for(int i=0;i<n;i++){
printf("%d ",input_n[i]);
}
for (int i = 0; i < (n / 3); i++) {
int a = 0, b = 0, c = 0, total = 0;
int answer1, answer2;
a = input_n[i * 3] * 256;
b = input_n[i * 3 + 1] * 16;
c = input_n[i * 3 + 2];
total = a + b + c;
answer1 = total / 64;
answer2 = total % 64;
printf("%c%c", base[answer1], base[answer2]);
}
switch(n%3){
case 0:
break;
case 1:
printf("%c",base[input_n[n-1]*4]);
printf("=");
break;
case 2:
printf("%c",base[input_n[n-2]*16+input_n[n-1]*4]);
printf("==");
break;
}
return 0;
}