Просьба предоставить некоторый код для преобразования массива char [] десятичных значений в массив байтов для большого целочисленного значения в c.преобразовать десятичный массив (str) в двоичный массив (байты)
Как я могу преобразовать этот ниже код для большого массива десятичных значений, например, я получаю результат как массив длинных байтов?
static int dec2bin (char inbuf[], int num_convert)
{
char ctemp;
int result, power;
num_convert--; /* index of LS char to convert */
result = 0;
power = 1;
while (num_convert >= 0)
{
ctemp = inbuf[num_convert--]; /* working digit */
if (isdigit(ctemp))
{
result += ((ctemp-'0') * power);
power *= 10;
}
else
return(0); /* error: non-numeric digit detected */
}
return (result);
}
Нет, это не просто долго значение, это действительно значение BigInteger, кто может дать простой разл к байту (бинарную логику преобразования, я заменю Int со своими реализациями BigInt и BigInt операторами (добавить, мульт) и т.д.,
Samuel правильно!
Спасибо заранее.
Для примера я могу заменить выше, как показано ниже
static int dec2bin (char inbuf[], bigint num_convert)
{
char ctemp;
bigint result, power;
num_convert--; /* index of LS char to convert */
result = 0;
power = 1;
while (num_convert >= 0)
{
ctemp = inbuf[num_convert--]; /* working digit */
if (isdigit(ctemp))
{
result = bi_add(result ,(bi_mult((ctemp-'0'), power));
power = bi_mult(power , 10);
}
else
return(0); /* error: non-numeric digit detected */
}
return (result);
}
что-то вроде этого будет работать?
Я думаю, что «большой» не относится к размеру чисел, только размер массива числовых строк. Я понял, что OP хочет номера в диапазоне 'long'. –
@Carl - Обратите внимание, что OP пишет: «Я получаю результат как массив длинных байтов». Поскольку он запрашивает * массив * longs, он уверен, похоже, что они ищут нечто большее, чем просто длинное. –
Хм. Я согласен, что это был вопрос, который неправильно понял, и ваша интерпретация правдоподобна. –