teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

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

2015/02/08 12:05

投稿

argius
argius

スコア9396

answer CHANGED
@@ -28,7 +28,7 @@
28
28
  `BitSet`を`BigInteger`に変換するには、例えばこのようにすると良いです。
29
29
  ちゃんとテストしていないので、実際に使うときにはご注意ください。
30
30
 
31
- バイトの先頭は、常に符号をにするために余分に1バイト空けています。
31
+ バイト配列の先頭は、常に符号をにするために余分に1バイト空けています。
32
32
 
33
33
  ```lang-java
34
34
  static BigInteger toBigInteger(BitSet bits) {

1

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

2015/02/08 12:05

投稿

argius
argius

スコア9396

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
+ ```