我正在尝试按比例翻译两个数字范围。 从一侧有一个字节,在第二侧我有不同范围的整数或浮点数,包括范围“0 ... X”和“-X ... X”。
我怎么能这样做?有一些自动化的方式吗?我不需要精确的舍入,但我想避免为每个新范围制作新表;-) 我找到了一个主题,但它是关于Python的,它需要重新设置每个不以零开头的范围:Translate numbers from a range to another range
Int模板示例:
namespace MyProgram
...
void Program()
{
byte[] foo; // (0x00 ... 0xFF)
int bar; // int or float
int rmin = -500;
int rmax = 500;
foo = /*input*/;
bar = Do_Translation (foo, rmin, rmax);
...}
private int Do_Translation (byte[] foo, int rmin, int rmax)
{
if (foo[0] > 0x80)
{
//translate into range of 1...500
}
else if (foo[0] == 0x80)
{
return 0;
}
else if (foo[0] < 0x80)
{
//translate into range of -500...-1
}
}
示例浮动模板:
namespace MyProgram
...
void Program()
{
byte[] foo; // (0x00 ... 0xFF)
float bar; // int or float
int rmin = 15.5;
int rmax = 100;
foo = /*input*/;
bar = Do_Translation (foo, rmin, rmax);
...}
private float Do_Translation (byte[] foo, int rmin, int rmax)
{
//translate byte range of 0x00...0xFF into float range of 15.5...100
}
答案 0 :(得分:1)
要将byte[]
转换为Int32或转换为浮点数,您可以使用BitConverter类。
如我的评论中所述,您需要计算从旧范围到新范围的比率。假设rmin和rmax是您的新范围最小值和新范围最大值,那么您还需要提供旧的最小值和最大值。类似于this。