计算十六进制偏移量

问题描述 投票:1回答:2

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

enter image description here

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

c# string hex
2个回答
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位)


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。然后它将是行号的最大长度。

© www.soinside.com 2019 - 2024. All rights reserved.