计算十六进制偏移量

时间:2018-03-19 11:13:11

标签: c# string hex

目前我正在开发一个简单的二进制查看器(十六进制查看器),它打开二进制文件并将代码输出为十六进制值。我还想创建一个偏移量,显示每行中第一个十六进制值的位置。偏移量当然也应该是十六进制格式。现在我遇到的问题是我不知道如何在偏移量中添加零点以及需要添加多少个零点。它应该是这样的:

enter image description here

您可以看到偏移量在开头有一些零。我想计算我需要添加多少零以及如何添加。

2 个答案:

答案 0 :(得分:1)

添加' 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位)

答案 1 :(得分:0)

如果您想知道数字中需要0,请使用string

首先,将数字格式化为十六进制,ToString("X")将适用于它。

获取Length并将其减去目标长度,例如8。

 int zeroCount = 8 - i.ToString("X").Length;

不要忘记检查zeroCount是否为否定。 zeroCount = Math.Max(0, zeroCount);将保护它。

此外,如果需要确定行号的最大宽度而不是硬编码8,也可以使用string来完成。

使用ToString("X")获取与行数和格式相同的最大行号。得到它Length。然后它将是行号的最大长度。