我想从流位置获取列号(十六进制编辑器)
I want to get column number from stream position (hex editor)
我已经制定了一种方法来获取我的 wpf hexeditor control 中的列号它与 属性 一起工作正常:
BytePerLine = 16 or 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 的良好列号。
效果不佳时请查看下一张图片。列颜色不正确...
感谢您的帮助! :)
这里使用浮点运算是错误的。您可以而且应该使用整数算法进行所有必要的计算。
例如:
static void GetRowCol(long position, long colCount, out long row, out long col)
{
row = position / colCount;
col = position % colCount;
}
我已经制定了一种方法来获取我的 wpf hexeditor control 中的列号它与 属性 一起工作正常:
BytePerLine = 16 or 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 的良好列号。
效果不佳时请查看下一张图片。列颜色不正确...
感谢您的帮助! :)
这里使用浮点运算是错误的。您可以而且应该使用整数算法进行所有必要的计算。
例如:
static void GetRowCol(long position, long colCount, out long row, out long col)
{
row = position / colCount;
col = position % colCount;
}