回答編集履歴
2
誤字の修正(制→正)、脱字の修正(バイトの先頭→バイト配列の先頭)
answer
CHANGED
@@ -28,7 +28,7 @@
|
|
28
28
|
`BitSet`を`BigInteger`に変換するには、例えばこのようにすると良いです。
|
29
29
|
ちゃんとテストしていないので、実際に使うときにはご注意ください。
|
30
30
|
|
31
|
-
バイトの先頭は、常に符号を
|
31
|
+
バイト配列の先頭は、常に符号を正にするために余分に1バイト空けています。
|
32
32
|
|
33
33
|
```lang-java
|
34
34
|
static BigInteger toBigInteger(BitSet bits) {
|
1
BitSetをBigIntegerに変換する例を追記
answer
CHANGED
@@ -18,3 +18,26 @@
|
|
18
18
|
参考URL:
|
19
19
|
[java.util.BitSet - Java SE 8 APIドキュメント](https://docs.oracle.com/javase/jp/8/api/java/util/BitSet.html)
|
20
20
|
[Shifting a Java BitSet - Stack Overflow](http://stackoverflow.com/questions/9008150/shifting-a-java-bitset)
|
21
|
+
|
22
|
+
|
23
|
+
|
24
|
+
---
|
25
|
+
|
26
|
+
(追記)
|
27
|
+
|
28
|
+
`BitSet`を`BigInteger`に変換するには、例えばこのようにすると良いです。
|
29
|
+
ちゃんとテストしていないので、実際に使うときにはご注意ください。
|
30
|
+
|
31
|
+
バイトの先頭は、常に符号を制にするために余分に1バイト空けています。
|
32
|
+
|
33
|
+
```lang-java
|
34
|
+
static BigInteger toBigInteger(BitSet bits) {
|
35
|
+
byte[] bytes = new byte[bits.size() + 1];
|
36
|
+
int i = bytes.length;
|
37
|
+
for (byte b : bits.toByteArray()) {
|
38
|
+
--i;
|
39
|
+
bytes[i] = (byte)(b & 0xFF);
|
40
|
+
}
|
41
|
+
return new BigInteger(bytes);
|
42
|
+
}
|
43
|
+
```
|