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

回答編集履歴

1

補足

2018/07/19 07:17

投稿

tachikoma
tachikoma

スコア3601

answer CHANGED
@@ -2,4 +2,16 @@
2
2
  ```Python
3
3
  def hexTobin(hex):
4
4
  return eval(hex)
5
+ ```
6
+
7
+ ----
8
+ `eval`は与えられた文字列をソースコードとして実行する命令です。`0xcd`は16進数整数リテラルなので、
9
+ ```Python
10
+ a = 0xcd
11
+ ```
12
+ と代入することができます。今、`s='0xcd'`のように、sの中に"16進数整数リテラル"の文字列があるとすると、欲しいのはsの中身をPythonに実行(or評価)させた結果です。この実行命令が`eval`です。ただし、evalを使うとコードインテリセンスが働かなかったり、hexにおかしな値を食わせてもPythonコードとして実行可能ならエラーなしに通ってしまうので、いい作法とはあまり言えませんので、`int(s, 0)`のほうがいいと思います。
13
+
14
+ ```python
15
+ eval("a = 2")
16
+ print(a) # <- 実行できるが、aが定義されてないと怒られる
5
17
  ```