您的位置:首页 > 其它

Base 64 Encoding (64编码)

2009-07-22 15:22 495 查看
Base 64 Encoding
Input: problemD.txt
Output: Console output
Description
The Base 64 encoding is designed to represent arbitrary sequences of octes in a form that requires case sensitivity but need not be humanly readable.
A 65-character subset of US-ASCII is used ,enabling 6 bits to be represented per printable character.(The extra 65th character,”=”,is used to signify a special processing function .).
The encoding process represents 24-bit groups of inputs bits as output strings of 4 encoded characters. Proceeding from left to right ,a 24-bit input group is formed by concatenating3 8-bit input groups. These 24 bits are then treated as 4 concatenated 6-bit groups, each of which is translated into a single digit in the base 64 alphabet( Table 1).

Table 1: The Base 64 Alphabet

Value
Encoding
Value
Encoding
Value
Encoding
Value
Encoding
0
A
17
R
34
i
51
z
1
B
18
S
35
j
52
0
2
C
19
T
36
k
53
1
3
D
20
U
37
l
54
2
4
E
21
V
38
m
55
3
5
F
22
W
39
n
56
4
6
G
23
X
40
o
57
5
7
H
24
Y
41
p
58
6
8
I
25
Z
42
q
59
7
9
J
26
a
43
r
60
8
10
K
27
b
44
s
61
9
11
L
28
c
45
t
62
+
12
M
29
d
46
u
63
/
13
N
30
e
47
v
(pad)
=
14
O
31
f
48
w
15
P
32
g
49
x
16
Q
33
h
50
y
Each 6-bit group is used as an index into an array of 64 printable characters.The character referenced by the index is praood in we output string.
Special processing is performed if fewer than 24 bits are available at the end of the data being encoded. A full encoding quantum is always completed at the end of a quantity. When fewer than 24 input bits are available in an input group, zero bits are added(on the right) to form an integral number of 6-bit group. Padding at the end of the data is performed using the ‘=’ character. Since all base 64 input is an integral number of octets, only the following cases can arise:
(1):the final quantum of encoding input is an integral multiple of 24 bits; here, the final unit of encoded output will be an integral multiple of 4 characters with no ‘=’ padding.
(2) the final quantum of encoding input is exactly 8 bits; here, the final unit of encoded output will be two characters followed by two “=”padding characters , or
(3)the final quantum of encoding input is exactly 16bits; here the final unit of encoded output will be three characters followed by one “=”padding character.

Input

The first line of the input contains a single integer T ( 1<=T<=100 ), the number of test cases. Then T cases followed.Each case is a string ( no tempty string ) in one line to be encoded.

Output

For each test case, the encoding result of the string will be output.

Sample Input
4
What is your name
i
you
yes
Output for Sample input
V2hhdCBpcyB5b3VyIG5hbWU=
aQ==
eW91
eWvz

Solution:
本题看上去很烦,其实不难。原来是8位表示一个ACSII码即一个字符,现在3个一组,即24位,重新划分,6位表示一个字符,字符为相应的二进制码对应的值在表中所对应的字符。不是24的整数倍的按上面的规则进行处理。该问题处理的关键是得到字符二进制编码,然后将二进制编码重新划分,再变成字符。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: