BigNumber.h Arduino如何解析一个大于10位的数字

时间:2017-09-28 15:24:31

标签: c++ arduino-uno lib

我已经编写了一个简单的代码来测试一个数字,看看它是否是一个素数但是在输入大的素数来测试arduino程序的速度时它只需要一个数字长度9- /欠数字我测试了我的读取功能,它返回整个数字,但'BigNumber'不会解析它只是说它的0

代码:

<|S 1234567891
>|NUM=1234567891

如果我输入一个10位数的代码,代码会停止arduino,输出就是

<S 123456789
>|NUM=123456789
>|123456789 is not a prime number 
>|because ist a factor of 3

如果我输入一个9位数字,它会按预期输出

<|S 1111111111
>|NUM=1111111111
>|1111111111 is not a prime number 
>|because ist a factor of 11

我试过看看是否有人和我有同样的问题,但我无法在任何地方找到它。

我使用arduino-uno

编辑:在做了一些更多的测试后,它现在没有设置在测试'S 1111111111'(10位数)之后发生崩溃的数字,其输出是正常的:

<|S 11111111111
>|NUM=11111111111
>|0 cant be a prime number because it doesn't end in 1,3,7,9

但是如果我输入11位数字就会解析为0 ??

{{1}}

bty:我忘了提到'S number_here'S指定查找结果的方法我也有D = DataCrunch它检查所有数字而L = List女巫创建一个找到的Prime数字列表,如素数搜索,并且很好地解释了DataCrunch(D)在解析给定数字时遇到同样的问题。

EDIT2: 这证明BigNumber可以拥有如此之多的数字 https://docs.spring.io/spring-integration/reference/html/files.html#file-reading 在第一篇文章中。

1 个答案:

答案 0 :(得分:0)

因此,经过一些扩展性研究后发现BigNumber不适合非常大的数字但是'BigNumber.h'lib的另一部分是bc_num。

bc_num x;
bc_str2num(&x, "9898989898", 10);
String c = "Controll=";
c+=bc_num2str(x);
Serial.println(c);

输出

Controll=9898989898

但正如你所看到的那样,这需要更多的编程才能得到实践,所以我现在就开始了,然后再开始。