質問編集履歴

1

書いていたコードを添付していなかったので添付しました。

2019/11/11 09:00

投稿

kouyou-
kouyou-

スコア6

test CHANGED
File without changes
test CHANGED
@@ -1,7 +1,47 @@
1
1
  python初心者です。もしよろしければアドバイスのほうよろしくお願いします。
2
2
 
3
- 20桁の16進数(例:00112233445566778899)を最終結果として4桁の2進数を20個にしたいです。そこで、私は20桁の16進数を80桁の2進数に変換してから4桁の2進数を20個に分けようとしたら```TypeError: unsupported operand type(s) for >>: 'str' and 'int'```と出てきてstr関数に変換したためこのような結果になったのかなと思いました。
3
+ 20桁の16進数(例:00112233445566778899)を最終結果として4桁の2進数を20個にしたいです。そこで、試しに私は20桁の16進数を80桁の2進数に変換してから16桁の2進数5個に分けてみたら```TypeError: unsupported operand type(s) for >>: 'str' and 'int'```
4
4
 
5
+ と出てきてstr関数に変換したためこのような結果になったのかなと思いました。
6
+
5
- なので、20桁の16進数から1桁の16進数20個に変えてから4桁の2進数20個に変えたらうまくいくのかなと思いましたが、やり方がうまく思いつきませんでした。
7
+ なので、20桁の16進数から4桁の16進数5個に分けてから16桁の2進数5というような流れに変えたらうまくいくのかなと思いましたが、やり方がうまく思いつきませんでした。
6
8
 
7
9
  どのようにすれば、うまく動作するようになるでしょうか。すみませんよろしくお願いします。
10
+
11
+ ```ここに言語を入力
12
+
13
+ i = 0x00112233445566778899
14
+
15
+ bin_str = bin(i)
16
+
17
+ print(bin_str)
18
+
19
+
20
+
21
+ split1 = (bin_str >> 16*4) & 0xffff
22
+
23
+ split2 = (bin_str >> 16*3) & 0xffff
24
+
25
+ split3 = (bin_str >> 16*2) & 0xffff
26
+
27
+ split4 = (bin_str >> 16*1) & 0xffff
28
+
29
+ split5 = (bin_str >> 16*0) & 0xffff
30
+
31
+
32
+
33
+ print(f'{split1:016b}')
34
+
35
+ print(f'{split2:016b}')
36
+
37
+ print(f'{split3:016b}')
38
+
39
+ print(f'{split4:016b}')
40
+
41
+ print(f'{split5:016b}')
42
+
43
+ ```
44
+
45
+ こちらが、20桁の16進数から16桁2進数5個に試しに分けてみたもので上に書いたようなエラーが出たものです。
46
+
47
+ 説明がとても下手で分かりずらいとは思いますがアドバイスよろしくお願いします。