[英]convert decimal array(str) to binary array(bytes)
请提供一些代码,将c的大整数值的十进制值的char []数组转换为bytes数组。
如何将下面的代码转换为大的十进制值数组,例如将结果作为长字节数组获取?
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);
}
不,它不仅仅是long值,它实际上是biginteger值,任何人都可以将dec转换为字节(二进制转换逻辑,我将用我的bigint实现和bigint运算符(add,mult)等替换int,
塞缪尔是对的!
提前致谢。
例如我可以替换以下内容
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);
}
这样的事情会起作用吗?
听起来您正在寻找自己进行底层算术的解决方案。
您是否考虑过使用现有的bignum软件包,例如GNU Multi Precision Arithmetic库 ? 拥有现有代码后,转换它非常容易。 例如,此代码:
result += ((ctemp-'0') * power);
power *= 10;
变成:
mpz_t tmp;
mpz_init(tmp);
mpz_mul_ui(tmp, power, ctemp - '0');
mpz_add(result, result, tmp);
mpz_clear(tmp);
mpz_mul_ui(power, power, 10);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.