二進制與十六進制互轉
1.0s 256M二進制與十六進制之間可以直接互相轉換,不必先算出這個數在十進制下是多少。
給你一個轉換方向 \(t\) 與一個數字字串 \(s\):
- 若 \(t = 1\),\(s\) 是十六進制表示的非負整數,請輸出它的二進制表示。
- 若 \(t = 2\),\(s\) 是二進制表示的非負整數,請輸出它的十六進制表示。
十六進制的位數字 \(10\) 到 \(15\) 用大寫英文字母 A 到 F 表示。
輸入格式
輸入有兩行:
- 第一行是一個整數 \(t\),代表轉換方向。
- 第二行是一個數字字串 \(s\)。
保證 \(s\) 不會有多餘的前導零(例如不會出現 007,但 0 本身是合法的)。
限制
- \(t \in \{1, 2\}\)
- \(1 \le |s| \le 10^5\)
- 若 \(t = 1\),\(s\) 只由
0~9與A~F組成 - 若 \(t = 2\),\(s\) 只由
0與1組成
輸出格式
輸出一行,為轉換後的數字字串,不能有多餘的前導零。
範例輸入 1
1
1F
範例輸出 1
11111
範例解釋 1
1 攤開是 0001、F 攤開是 1111,接起來是 00011111,去掉前導零後是 11111。
範例輸入 2
2
11111
範例輸出 2
1F
範例解釋 2
11111 只有 \(5\) 位,不是 \(4\) 的倍數,左邊補到 \(8\) 位變成 00011111,再每 \(4\) 位一組換成 1 與 F。
這正是範例 1 的反向操作。
範例輸入 3
1
0
範例輸出 3
0
範例輸入 4
1
FFFFFFFFFFFFFFFFFF
範例輸出 4
111111111111111111111111111111111111111111111111111111111111111111111111
範例解釋 4
\(s\) 可以長到任何內建整數型態都裝不下——所以不能先把它換算成整數再轉回去。