十六进制编码
* * * *
拉格朗日计划
* * * *
十六进制编码

给定一些字符串,按照xxd工具的范式输出其十六进制编码,具体格式如下:

将每个字符串按每16个字节一组分成若干组,对每一组,在一行中按如下顺序输出:

七位16进制组号(从0开始计数),后面跟0,冒号和一个空格。

之后将该组字符串转化成16进制后分割成8段,每段4位,相邻两段之间用空格隔开。

上述内容定宽为51个字符,并左对齐。

接下来输出该组字符串的原文,但换行符需要替换为英文句号。


最后,不同字符串之间用一个空行隔开。

本题难度:



解答

按要求组合使用一些标准函数即可。

最终代码有四行。

代码长度:195字节 vs. 全站第一:137字节。

import sys
for a in sys.argv[1:]:
  for i in range(0,len(a),16):b=a[i:i+16];print(f"{f"{i//16:07x}0: "+' '.join(b.encode().hex()[j:j+4]for j in range(0,33,4)):<51}"+b.replace('\n','.'))
  print('')