如果数据代表 Base-64 编码材料,则字符串中编码的字节为:
$ b64 -d "+sB6hF46GyU="
Base64:
0x0000: +sB6hF46GyU=
Binary:
0x0000: FA C0 7A 84 5E 3A 1B 25 00 ..z.^:.%.
$
作为参考,同一程序将另一组解码为:
$ b64 -d "GxvS117MfVw="
Base64:
0x0000: GxvS117MfVw=
Binary:
0x0000: 1B 1B D2 D7 5E CC 7D 5C 00 ....^.}\.
$
因此,我不确定您是如何得出您在问题中声称的答案 56699 的。
我需要使用 Base-64 的东西,并编写程序以满足我当时的特殊需求。
有关 Base 64 的详细信息,请参阅RFC3548。
每组 4 个 Base-64 编码字符代表 1-3 个字节的二进制(未编码)数据。您给出的字符串都是 12 字节长,代表 7-9 字节的二进制数据。字符串实际上只编码 8 个字节;最后的“=”意味着不存在第 9 个字节。
来自 RFC:
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
14 O 31 f 48 w (pad) =
15 P 32 g 49 x
16 Q 33 h 50 y
所以,'GxvS' 是:
6 49 47 18
000110 110001 101111 010010
重组:
000110.11 0001.1011 11.010010
解释为十六进制:
0x1B 0x1B 0xD2
这是我的程序作为前三个字节给出的。
如果我不得不猜测,你有一个用 Base-64 而不是十进制编码的 8 字节“整数”。而且它不是直接映射到 56699;它是某种与 ID 56699 相关联的会话标识符。