# 8/30コードスプリント勉強会 ## 問題 入力された文字列(UTF-8)に対してBase64変換を施した文字列を出力してください。 ### 補足 Base64は、データを64種類の印字可能な英数字のみを用いて、それ以外の文字を扱うことの出来ない通信環境にて マルチバイト文字やバイナリデータを扱うためのエンコード方式である。 (Wikipediaより) ## Base64の処理具体例 ### ABCDEFの場合 + 2進数に変換 ABCDEFG = 01000001 01000010 01000011 01000100 01000101 01000110 01000111 + 6bitずつに変換 010000 010100 001001 000011 010001 000100 010101 000110 010001 11 + 6bitのあまりが出た場合は6bitとなるように0を埋める 010000 010100 001001 000011 010001 000100 010101 000110 010001 110000 + 変換表を用いて4文字ずつ変換する "QUJD", "REVG", "Rw" + 4文字のあまりが出た場合は「=」を付与して4文字にする "QUJD", "REVG", "Rw==" + すべての文字列を結合する "QUJDREVGRw==" ### 入出力例 * 例1 ・入力 ABCDEFG ・出力 QUJDREVGRw== * 例2 ・入力 株式会社アップロード ・出力 5qCq5byP5Lya56S+44Ki44OD44OX44Ot44O844OJ ### 変換表 | ビット | Base64 | ビット | Base64 | ビット | Base64 | ビット | Base64 | | -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | | 000000 | A | 010000 | Q | 100000 | g | 110000 | w | | 000001 | B | 010001 | R | 100001 | h | 110001 | x | | 000010 | C | 010010 | S | 100010 | i | 110010 | y | | 000011 | D | 010011 | T | 100011 | j | 110011 | z | | 000100 | E | 010100 | U | 100100 | k | 110100 | 0 | | 000101 | F | 010101 | V | 100101 | l | 110101 | 1 | | 000110 | G | 010110 | W | 100110 | m | 110110 | 2 | | 000111 | H | 010111 | X | 100111 | n | 110111 | 3 | | 001000 | I | 011000 | Y | 101000 | o | 111000 | 4 | | 001001 | J | 011001 | Z | 101001 | p | 111001 | 5 | | 001010 | K | 011010 | a | 101010 | q | 111010 | 6 | | 001011 | L | 011011 | b | 101011 | r | 111011 | 7 | | 001100 | M | 011100 | c | 101100 | s | 111100 | 8 | | 001101 | N | 011101 | d | 101101 | t | 111101 | 9 | | 001110 | O | 011110 | e | 101110 | u | 111110 | + | | 001111 | P | 011111 | f | 101111 | v | 111111 | / | ## サンプルコード * Java https://paiza.io/projects/H1GniOQKr4NYKrxA3wUlgQ * C https://paiza.io/projects/1e7yrIeU-jTOohsesXtc6A ## 参考 アスキーコード表 https://www.k-cube.co.jp/wakaba/server/ascii_code.html Wikipedia https://ja.wikipedia.org/wiki/Base64
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up