问题描述
fmt.Println(hex.Dump([]byte{1,2,3,4,5,6,7,8,9,1,0}))
显示:
00000000 01 02 03 04 05 06 07 08 09 00 01 02 03 04 05 06 |................|
00000010 07 08 09 00 |....|
如何在所有行的十六进制地址前添加缩进?喜欢
00000000 01 02 03 04 05 06 07 08 09 00 01 02 03 04 05 06 |................|
00000010 07 08 09 00 |....|
通过 \n 分割行,然后在每行之前缩进,但是有没有内置工具可以做到这一点?我尝试了 hex.Dumper
和 tabwriter.NewWriter
,但它们只是将缩进视为普通数据并与十六进制转储一起打印。
解决方法
hex.Dump()
返回一个格式化的字符串。如果您希望将其格式化为每行缩进,请将所有换行符替换为换行符 + 缩进(例如制表符)。加上在它的开头加上缩进,这样第一行也将被缩进(前面没有换行符)。
要替换,请使用 strings.ReplaceAll()
。
看这个例子:
s := hex.Dump([]byte{1,2,3,4,5,6,7,8,9,1,0})
fmt.Println(s)
s = "\t" + strings.ReplaceAll(s,"\n","\n\t")
fmt.Println(s)
输出(在 Go Playground 上尝试):
00000000 01 02 03 04 05 06 07 08 09 00 01 02 03 04 05 06 |................|
00000010 07 08 09 00 01 02 03 04 05 06 07 08 09 00 01 02 |................|
00000020 03 04 05 06 07 08 09 00 |........|
00000000 01 02 03 04 05 06 07 08 09 00 01 02 03 04 05 06 |................|
00000010 07 08 09 00 01 02 03 04 05 06 07 08 09 00 01 02 |................|
00000020 03 04 05 06 07 08 09 00 |........|