回答編集履歴

3

追記

2017/12/13 07:18

投稿

asm
asm

スコア15147

test CHANGED
@@ -14,6 +14,12 @@
14
14
 
15
15
 
16
16
 
17
+ 10進数: 12と34を入力して1234を出力する時は`12 * 100 + 34 * 1`
18
+
19
+ 16進数: 0xABと0xCDを入力して0xABCDを出力する時も同様に`0xAB * 0x100 + 0xCD * 1`
20
+
21
+
22
+
17
23
  > Q2)intをGetBytesすると、なぜ4つずつの組の配列になるのか?
18
24
 
19
25
 
@@ -27,6 +33,46 @@
27
33
 
28
34
 
29
35
  1byte分の入力しか入れてないから
36
+
37
+
38
+
39
+ ```
40
+
41
+ byte[] size1 = BitConverter.GetBytes(size / 16777216);
42
+
43
+ byte[] size2 = BitConverter.GetBytes(size % 16777216 / 65536);
44
+
45
+ byte[] size3 = BitConverter.GetBytes(size % 16777216 % 65536 / 256);
46
+
47
+ byte[] size4 = BitConverter.GetBytes(size % 16777216 % 65536 % 256);
48
+
49
+ ```
50
+
51
+
52
+
53
+ 32bitの変数sizeに対して0x1000000で割ると、出て来る数は-128~+127
54
+
55
+
56
+
57
+ `size % 16777216` これは上位8bitを削って下位24bitを出してるのでそこから2の16乗で割ると出て来る数は-128~+127
58
+
59
+ 以下同様
60
+
61
+
62
+
63
+ 削ぎ落とさずに
64
+
65
+
66
+
67
+ ```
68
+
69
+ byte[] le_size = BitConverter.GetBytes(size);
70
+
71
+ ```
72
+
73
+
74
+
75
+ でよい
30
76
 
31
77
 
32
78
 
@@ -65,3 +111,21 @@
65
111
 
66
112
 
67
113
  intが32bitなので消えました
114
+
115
+
116
+
117
+ > List<byte> bytes = new List<byte>({5,12,24,40,58,63,71,86});
118
+
119
+ としたとき、
120
+
121
+ ひょっとして、それは、
122
+
123
+ List<List<byte>> bytess = new List<List<byte>>({{5,12,24,40}, {58,63,71,86}});
124
+
125
+ みたいに
126
+
127
+
128
+
129
+ 4byte毎にintに変換したいのかバイト列の一部をintに変換したいのか
130
+
131
+ 見失ってませんか?

2

0x01000000 -> 0x1000000

2017/12/13 07:18

投稿

asm
asm

スコア15147

test CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  ```
6
6
 
7
- 16777216 = 0x01000000 = 0x100 * 0x100 * 0x100
7
+ 16777216 = 0x1000000 = 0x100 * 0x100 * 0x100
8
8
 
9
9
  65536 = 0x10000 = 0x100 * 0x100
10
10
 

1

脱字 & フォーマット修正

2017/12/13 06:12

投稿

asm
asm

スコア15147

test CHANGED
@@ -2,11 +2,15 @@
2
2
 
3
3
 
4
4
 
5
+ ```
6
+
5
7
  16777216 = 0x01000000 = 0x100 * 0x100 * 0x100
6
8
 
7
- 6553 = 0x10000 = 0x100 * 0x100
9
+ 65536 = 0x10000 = 0x100 * 0x100
8
10
 
9
11
  256 = 0x100
12
+
13
+ ```
10
14
 
11
15
 
12
16