回答編集履歴

3

誤記削除

2019/06/16 16:30

投稿

cateye
cateye

スコア6851

test CHANGED
@@ -2,57 +2,7 @@
2
2
 
3
3
  文字列として読み込んで、数値(int)に変換する必要が有ります。
4
4
 
5
- intの変数をクリア(0を設定)して、文字れつの先頭から見ていって
6
-
7
- '1'だったら1を足して1ビットシフト'0'ならシフトだけ・・・
8
-
9
- と言う操作を文字列が終わるまで続ければOKです。
10
-
11
- ・・・追記:Cですがこんなかんじ
12
-
13
- ```text
14
-
15
- usr ~/Project/test % ./a.out
16
-
17
- s1 = 42
18
-
19
- usr ~/Project/test % cat t1.c
20
-
21
- #include <stdio.h>
22
-
23
-
24
-
25
- int main(void)
26
-
27
- {
28
-
29
- char s1[] = "101010";
30
-
31
- int ans = 0;
32
-
33
- for (int i = 0; s1[i]; i++) {
34
-
35
- ans <<= 1;
36
-
37
- ans += s1[i] & 0x0f ; ←ASCIIの場合はこれで行ける
38
-
39
- }
40
-
41
-
42
-
43
- printf("s1 = %d\n", ans);
44
-
45
-
46
-
47
- return 0;
48
-
49
- }
50
-
51
- usr ~/Project/test %
52
-
53
- ```
54
-
55
- c++ならstrtol()が使えます。・・・失礼、忘れてた
5
+ c++ならstrtol()が使えます。
56
6
 
57
7
  ```c++
58
8
 

2

加筆

2019/06/16 16:30

投稿

cateye
cateye

スコア6851

test CHANGED
@@ -51,3 +51,31 @@
51
51
  usr ~/Project/test %
52
52
 
53
53
  ```
54
+
55
+ c++ならstrtol()が使えます。・・・失礼、忘れてた
56
+
57
+ ```c++
58
+
59
+ #include <iostream>
60
+
61
+
62
+
63
+ int main(void)
64
+
65
+ {
66
+
67
+ char s1[] = "101010";
68
+
69
+ int ans = int(strtol(s1,nullptr,2));
70
+
71
+
72
+
73
+ std::cout << ans << std::endl;
74
+
75
+
76
+
77
+ return 0;
78
+
79
+ }
80
+
81
+ ```

1

加筆

2019/06/16 16:28

投稿

cateye
cateye

スコア6851

test CHANGED
@@ -7,3 +7,47 @@
7
7
  '1'だったら1を足して1ビットシフト'0'ならシフトだけ・・・
8
8
 
9
9
  と言う操作を文字列が終わるまで続ければOKです。
10
+
11
+ ・・・追記:Cですがこんなかんじ
12
+
13
+ ```text
14
+
15
+ usr ~/Project/test % ./a.out
16
+
17
+ s1 = 42
18
+
19
+ usr ~/Project/test % cat t1.c
20
+
21
+ #include <stdio.h>
22
+
23
+
24
+
25
+ int main(void)
26
+
27
+ {
28
+
29
+ char s1[] = "101010";
30
+
31
+ int ans = 0;
32
+
33
+ for (int i = 0; s1[i]; i++) {
34
+
35
+ ans <<= 1;
36
+
37
+ ans += s1[i] & 0x0f ; ←ASCIIの場合はこれで行ける
38
+
39
+ }
40
+
41
+
42
+
43
+ printf("s1 = %d\n", ans);
44
+
45
+
46
+
47
+ return 0;
48
+
49
+ }
50
+
51
+ usr ~/Project/test %
52
+
53
+ ```