This is the mail archive of the java@gcc.gnu.org mailing list for the Java project.
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
| Other format: | [Raw text] | |
hello Aleksy,
On Friday 25 August 2006 01:37, Aleksy Schubert wrote:
> ...
> The constructor
>
> public BigInteger(int signum, byte[] magnitude)
>
> basically constructs the integer based on the array of bytes.
> It tries to contract the array of integers, but in fact it
> does that only provided that the number represented by
> magnitude can fit into 32 bits.
i'm not entirely sure about what you mean by that. if you mean that it tries
to fit the supplied bytes in an array of ints (32-bit entities) then yes.
> ...
> To see the consequences, consider the following example.
>
> Suppose we start with the following array of bytes:
>
> a = { 32, 33, 34, 35, 36, 37, 0, 0, 0, 0, 0, 0 }
>
> integer = new BigInteger(a)
>
> returns a number with integer.words.length==3 and
> b = integer.toByteArray() gives the result
>
> { 32, 33, 34, 35, 36, 37, 0, 0, 0 }
>
> which is a bit unexpected.
indeed. i'm attaching a Mauve test to show that this is not the case with the
current BigInteger implementation in GNU Classpath CVS Head. was this the
source you inspected?
cheers;
rsn
/* TestOfToByteArray.java
Copyright (C) 2006 Free Software Foundation, Inc.
This file is part of Mauve.
Mauve is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
Mauve is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with Mauve; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301 USA.
*/
// Tags: JDK1.2
package gnu.testlet.java.math.BigInteger;
import gnu.testlet.TestHarness;
import gnu.testlet.Testlet;
import java.math.BigInteger;
import java.util.Arrays;
/**
*
*/
public class TestOfToByteArray
implements Testlet
{
private static final byte[] BYTES = { 32, 33, 34, 35, 36, 37, 0, 0, 0, 0, 0, 0 };
public void test(TestHarness harness)
{
harness.checkPoint("TestOfToByteArray");
try
{
BigInteger x = new BigInteger(BYTES);
harness.verbose("*** x = 0x" + x.toString(16));
byte[] ba = x.toByteArray();
harness.verbose("*** y = 0x" + gnu.java.security.util.Util.dumpString(ba));
harness.check(Arrays.equals(ba, BYTES), true, "Byte arrays MUST be equal");
}
catch (Exception x)
{
harness.debug(x);
harness.fail("TestOfToByteArray: " + x);
}
}
}
Attachment:
pgp00000.pgp
Description: PGP signature
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |