正整数变长编码转换程序
类型:程序题

试题名称:变长编码

时间限制:1.0 s 内存限制:128.0 MB

【问题描述】 小明学习了原码、反码、补码后,发现常用小整数用4字节补码存储太浪费,找到了一种正整数的变长编码方式,规则如下:

  1. 对于给定的正整数,首先将其表达为二进制形式。例如,0₁₀=0₂,926₁₀=1110011110₂。
  2. 将二进制数从低位到高位切分成每组7bit,不足bit的在高位用0填补。例如,0₂变为0000000的一组,1110011110₂变为0011110和0000111的两组。
  3. 由代表低位的组开始,为其加入最高位:如果这组是最后一组,最高位填0;否则填1。于是,0的变长编码为00000000一个字节,926的变长编码为10011110和00000111两个字节。

【输入描述】 输入第一行,包含一个正整数N。约定 0≤N≤10¹⁸。

【输出描述】 输出一行,输出N对应的变长编码的每个字节,每个字节均以2位十六进制表示(A-F使用大写字母),两个字节间以空格分隔。

样例输入1 0

样例输出1 00

样例输入2 926

样例输出2 9E 07

样例输入3 987654321012345678

样例输出3 CE 96 C8 A6 F4 CB B6 DA 0D

代码编辑器
测试用例输入
{{resultStatus.text}}