#P05029. 二进制与十六进制转换
二进制与十六进制转换
题目背景
二进制数只有 和 两个基本数字(数码)。十六进制数有 ,以及 A
、B
、C
、D
、E
、F
十六个数码,其中 A
、B
、C
、D
、E
、F
分别表示 。
一位十六进制数可以用四位二进制数表示,所以二进制数转十六进制数有快捷方法,具体方法如下:
- 分组。将二进制数整数部分从低位到高位四位一组,每一组组成二进制数,如果组内数字不够四个高位补零;将二进制数小数部分从高位到低位四位一组,每一组组成二进制数,如果组内数字不够四个末尾补零。
- 按组转换。将分组后的每一组二进制数转换成对应的十六进制数,然后按顺序将每组转换结果拼接就是最终转换结果。
十六进制数转二进制数正好是上述步骤的逆过程,只需要将十六进制的每一位转换成四位二进制数拼接在一起,去掉整数部分高位和小数部分低位多余的 即可。
题目描述
给定若干二进制数/十六进制正数,将它们转换成对应的十六进制数/二进制数。
输入格式
第 行是正整数 ,表示要处理 个进制数转换。
接下来有 行,每行是两个用空格隔开的字符串。第一个字符串 ,表明要转换的数的进制:如果 值为 bin
表示要转换的数是二进制,那么需要将它转换成十六进制;如果 值为 hex
表示表示要转换的数是十六进制,那么需要将它转换成二进制。第二个字符串是对应进制的正数,可能会出现小数。
输出格式
行,依次是输入的 个进制数按要求转换后的结果。如果出现字母,全部用大写。
输入输出样例
3
bin 1111010.11
hex 6F0.A
bin 1101110011000110111110110001000110111001000011010001111110100100110001101
7A.C
11011110000.101
1B98DF623721A3F498D
说明/提示
👀️ 对于的数据,, 的值是 bin
或 hex
中的一个。输入的正数符合该进制的书写规范,整数部分高位、小数部分低位不会出现多余的 ,小数点不会出现在开头或者末尾,十六进制数字母全部是大写。数的长度不会超过 。
相关
在下列比赛中: