题目
你需要创建一个特殊的整数编码程序。在这个程序中,数字较小时,它的编码占用的空间也应更小。
你的任务是根据以下规则将一个整数转换为一个特殊的编码字符串:
将整数转换为它的二进制形式。
从右到左每7位组成一个编码单元。
在每个编码单元的前面添加一个额外的位,该位表示是否有后续的编码单元:
如果后面还有编码单元,则该额外的位为1。
如果后面没有更多的编码单元,则该额外的位为0。
将得到的二进制编码单元转换为十六进制。
保证输出的十六进制编码为大写,并且是两位的。如果编码不足两位,前面应该填充0。
输入
一个非负整数 n(0 ≤ n ≤ 10^9)。
输出
一个符合上述规则的编码的十六进制字符串。
示例
输入示例1
0
输出示例1
00
输入示例2
100
输出示例2
64
说明
在第一个示例中,0的二进制表示为0。按规则,我们添加一个0在最前面,得到00。这个二进制串对应的十六进制是00。
在第二个示例中,100的二进制表示为1100100。按规则,我们添加一个0在最前面,得到01100100。这个二进制串对应的十六进制是64。
代码
import java.util