回答編集履歴

2

誤字の修正(制→正)、脱字の修正(バイトの先頭→バイト配列の先頭)

2015/02/08 12:05

投稿

argius
argius

スコア9390

test CHANGED
@@ -58,7 +58,7 @@
58
58
 
59
59
 
60
60
 
61
- バイトの先頭は、常に符号をにするために余分に1バイト空けています。
61
+ バイト配列の先頭は、常に符号をにするために余分に1バイト空けています。
62
62
 
63
63
 
64
64
 

1

BitSetをBigIntegerに変換する例を追記

2015/02/08 12:05

投稿

argius
argius

スコア9390

test CHANGED
@@ -39,3 +39,49 @@
39
39
  [Shifting a Java BitSet - Stack Overflow](http://stackoverflow.com/questions/9008150/shifting-a-java-bitset)
40
40
 
41
41
 
42
+
43
+
44
+
45
+
46
+
47
+ ---
48
+
49
+
50
+
51
+ (追記)
52
+
53
+
54
+
55
+ `BitSet`を`BigInteger`に変換するには、例えばこのようにすると良いです。
56
+
57
+ ちゃんとテストしていないので、実際に使うときにはご注意ください。
58
+
59
+
60
+
61
+ バイトの先頭は、常に符号を制にするために余分に1バイト空けています。
62
+
63
+
64
+
65
+ ```lang-java
66
+
67
+ static BigInteger toBigInteger(BitSet bits) {
68
+
69
+ byte[] bytes = new byte[bits.size() + 1];
70
+
71
+ int i = bytes.length;
72
+
73
+ for (byte b : bits.toByteArray()) {
74
+
75
+ --i;
76
+
77
+ bytes[i] = (byte)(b & 0xFF);
78
+
79
+ }
80
+
81
+ return new BigInteger(bytes);
82
+
83
+ }
84
+
85
+ ```
86
+
87
+