我正在测试BigIntegers。在C中使用BigIntegers#
当我取一个大的奇数并除以2时,我得到一个整数作为anwser,没有任何迹象表明它不能精确地分割数字。
所以第一个问题是我怎么知道两个数字完全分开。
我然后用少量的测试后,一个这样的代码:
string myNumberAsString = "25";
System.Text.UTF8Encoding encoding=new System.Text.UTF8Encoding();
byte[] myNumberAsByteArray = encoding.GetBytes(myNumberAsString);
BigInteger myNumber = new BigInteger(myNumberAsByteArray);
Console.WriteLine(myNumber/2);
给出结果6809有人知道为什么还是可以看到什么是错我的代码?
我使用的.NET 4.0实现的BigInteger
我不认为编码为UTF8会给你一个代表数字25的字节数组吗? – flq 2010-12-04 23:39:27
十六进制中的6809是0x1A99,正好是0x3532的一半。对于字符串中的字符,ASCII码(UTF-8在ASCII码范围内使用ASCII码)是0x32和0x35,由于little-endian字节顺序而变为0x3532。所以你的“大整数”并不奇怪,除法给你正确的结果。 – 2010-12-04 23:51:40