Math 确定任何基础的位置值

Math 确定任何基础的位置值,math,Math,我正在寻找一个函数,该函数将确定给定数字和基数的位置的值。比如说, 给定: 应返回:2 有人知道这方面的数学吗 编辑:该函数还应以数字形式传递整个值,而不是像“e328fa”之类的字符串。此外,返回值也应该是数字,因此FindInPlace(60(整数值)、16(基数)、2(位置、基于1的索引))应该返回3。如果数字已经转换为整数(即基数10) 或者将代码重写为 char FindPlace(int number, int base, int digitAsBaseToAPower) {

我正在寻找一个函数,该函数将确定给定数字和基数的位置的值。比如说,

给定:

应返回:2

有人知道这方面的数学吗


编辑:该函数还应以数字形式传递整个值,而不是像“e328fa”之类的字符串。此外,返回值也应该是数字,因此FindInPlace(60(整数值)、16(基数)、2(位置、基于1的索引))应该返回3。

如果数字已经转换为整数(即基数10)

或者将代码重写为

char FindPlace(int number, int base, int digitAsBaseToAPower)
{
    // TODO: Error checking
    return digits[(number / digitAsBaseToAPower) % base];
}
这适用于10进制,可以处理小数点左右的位置。您可以这样使用它:

place = getPlace(1120,10);
otherPlace = getPlace(0.1120,1e-3);
对于任何基础来说,更通用的解决方案都是棘手的。我会选择字符串解决方案。

像这样的

int place_value(int value, int base, int place)
{
    int value_in_place= value;
    for (int place_index= 1; place_index<place; ++place_index)
    {
        value_in_place/=base;
    }

    return value_in_place % base;
}
int-place\u值(int-value,int-base,int-place)
{
int value_in_place=值;
对于(int place_index=1;place_index,以下方法placeValue返回一个字符,因为基数11-36的位数大于9。该方法要求:

  • 整数值:整数值
  • 整数基数:将整数转换为整数的基数;可接受的值为2-36
  • int-place:该数字的索引;最低有效位有索引1


对于基于1的位置索引,公式为:

placeval=楼层(编号/(底座^(位置1)))模块底座

在Python中:

def FindInPlace(number, base, place):
    return number//base**(place-1) % base

如何将位置输入到函数中?例如,如果我想要0x3AF中的第一个数字,我可以调用get\u value\u of_place(0x3AF,16,256)吗?可以用两种方法之一指定位置。在我给出的示例中,您可以将其作为2(第二位)传入或者仅仅是10。我应该指定数字是以数字形式传递的,而不是字符串表示法。我编辑了这个问题以反映这一点。你确定它是一个基于一的索引吗?我认为place_值(10,10,1)将返回1,而不是0…是的,我没有使用它获得预期的行为。好吧,修复非常简单;只需说
for(int-place\u index=1;…)
place\u值(1120,10,1)返回2。我认为你偏离了基数的一个因素。呃,我应该说从零开始的索引。Mea-culpa.Perfect。双斜杠有什么作用?双斜杠是“floor division”。它相当于int(floor(a/b)),无需进行任何中间浮点运算。
int getPlace(float x, float place) {

    return (int)(x/place) % 10;
}
place = getPlace(1120,10);
otherPlace = getPlace(0.1120,1e-3);
int place_value(int value, int base, int place)
{
    int value_in_place= value;
    for (int place_index= 1; place_index<place; ++place_index)
    {
        value_in_place/=base;
    }

    return value_in_place % base;
}
import java.math.BigInteger;

...

    private static char placeValue(int value, int base, int place) {
        BigInteger bigValue = BigInteger.valueOf(value);
        String baseString = bigValue.toString(base);
        int numDigits = baseString.length();
        int digitIndex = numDigits - place;
        char digit = baseString.charAt(digitIndex); 
        return digit;
    }
def FindInPlace(number, base, place):
    return number//base**(place-1) % base