目前我正在研究一个简单的二进制查看器(十六进制查看器),它打开二进制文件并将代码输出为十六进制值。我还想创建一个偏移量,显示每行中第一个十六进制值的位置。偏移量当然也应该是十六进制格式。现在我遇到的问题是我不知道如何在偏移量中添加零,以及需要添加多少。它应该是这样的:
您可以看到偏移量在开头有一些零。我想计算我需要添加多少零以及如何执行此操作。
添加'0'表示填充正确吗?
你可以通过使用string.Pad
实现这一目标
uint offset = 0x0000000F;
string offsetPadded = offset.ToString("X").PadLeft(8,'0'); // The 'X' formats to hex
结果字符串应该是"0000000F"
零的数量通常为8或16(32-64位)。如果要支持大于4GB的文件,则应使用16个零(64位)
如果你想知道数字中需要0的数量,你可以使用string
。
首先,将数字格式化为十六进制,ToString("X")
将适用于它。
得到它的Length
并将其减去你的目标长度,如8。
int zeroCount = 8 - i.ToString("X").Length;
别忘了检查zeroCount
不是否定的。 zeroCount = Math.Max(0, zeroCount);
将确保它。
此外,如果需要确定行号的最大宽度而不是硬编码8,它也可以使用string
来完成。
使用ToString("X")
获取最大行号,该行号与行数和格式相同。得到它的Length
。然后它将是行号的最大长度。