問題 #2
Base32
RFC 4648 で定義された Base32 エンコーディングを実装してください。 標準入力から与えられる各行に対し、Base32 エンコードをおこなった文字列を標準出力へ改行区切りで出力してください。 なお、アルファベットの出力には大文字を用いてください。
実装例
const TABLE = [
'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', '2', '3', '4', '5', '6', '7',
];
while ($line = fgets(STDIN)) {
$line = rtrim($line);
$bits = '';
for ($i = 0; $i < strlen($line); $i++) {
$bits .= str_pad(base_convert(strval(ord($line[$i])), 10, 2), 8, '0', STR_PAD_LEFT);
}
$base32 = '';
foreach (str_split($bits, 5) as $b) {
$base32 .= TABLE[base_convert(str_pad($b, 5, '0'), 2, 10)];
}
$base32 .= match (strlen($bits) % 40) {
8 => '======',
16 => '====',
24 => '===',
32 => '=',
default => '',
};
echo $base32, PHP_EOL;
}
ランキング
ランク | ID | 作者 | サイズ | 投稿日時 |
---|---|---|---|---|
1 | #70 | takaram | 225 byte | 2024-03-08 12:40:28 |
2 | #62 | nsfisis (staff) | 235 byte | 2024-03-08 05:25:41 |
3 | #137 | basi | 250 byte | 2024-03-09 04:27:40 |
4 | #85 | m3m0r7 | 262 byte | 2024-03-08 14:57:05 |
5 | #155 | hanhan1978 | 275 byte | 2024-03-09 15:19:33 |
6 | #135 | tadsan (staff) | 276 byte | 2024-03-09 04:24:05 |
7 | #157 | notchman | 322 byte | 2024-03-09 15:53:40 |
8 | #52 | yamamoto-hiroya | 333 byte | 2024-03-08 00:18:57 |
9 | #127 | azuki-penguin | 355 byte | 2024-03-09 03:21:55 |
10 | #57 | kunikiya | 399 byte | 2024-03-08 02:34:49 |
11 | #42 | rinchoku | 447 byte | 2024-03-07 23:59:24 |
12 | #150 | tsbkw | 461 byte | 2024-03-09 11:41:14 |
13 | #2 | blue-goheimochi (staff) | 677 byte | 2024-03-06 08:24:32 |
14 | #3 | muno92 (staff) | 677 byte | 2024-03-06 08:42:30 |
15 | #140 | masnmt | 677 byte | 2024-03-09 04:52:12 |
16 | #141 | k-kuwata | 677 byte | 2024-03-09 08:36:45 |
17 | #151 | ticknical | 677 byte | 2024-03-09 14:38:16 |