我想从流位置获取列号(十六进制编辑器)

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

我已经制作了一个方法来获取我的wpf hexeditor control中的列号。它可以正常使用该属性:

BytePerLine = 16或8

但是当我使用其他值时,它会出错,并且不会总是给出好的列号。由于其他原因,我需要这个用于颜色列或在需要时获取列号。

C#代码:

/// <summary>
/// Get the column number of the position
/// </summary>

internal int GetColumnNumber(long position)
{
    var line = (double)position / BytePerLine;
    var decPart = line - Math.Truncate(line);

    return (int) decPart * BytePerLine;
}

工作正常时见下图。正确的列颜色,当不在视图中时,我也可以获得SectionStart的良好列号。

如果不能正常工作,请参见下一张图片。列颜色不正确...

谢谢您帮忙 ! :)

c# hex hex-editors
1个回答
1
投票

这里使用浮点运算是错误的。您可以而且应该使用整数运算进行所有必要的计算。

例如:

static void GetRowCol(long position, long colCount, out long row, out long col)
{
    row = position / colCount;
    col = position % colCount;
}
© www.soinside.com 2019 - 2024. All rights reserved.