データが 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
16 進数として解釈:
0x1B 0x1B 0xD2
これは、私のプログラムが最初の 3 バイトとして与えたものです。
推測してみると、10 進数ではなく Base-64 でエンコードされた 8 バイトの「整数」が得られます。また、56699 への直接のマッピングではありません。ID 56699 に関連付けられているのは、ある種のセッション ID です。