- くだすれPython(超初心者用) その24
939 :デフォルトの名無しさん[sage]:2014/11/05(水) 01:48:07.33 ID:9gbL5eJJ - ところで、共用体を使おうとするとクラッシュするんですが
ググっても全然出てこないし、使ってないんですかね。 構造体の場合 <Field type=c_ulong, ofs=0, size=4> <Field type=c_float, ofs=4, size=4> c_float 型に データ投入 <Field type=c_ulong, ofs=0, size=4> 0.5468 共用体の場合 <Field type=c_ulong, ofs=0, size=4> <Field type=c_float, ofs=0, size=4> c_float 型に データ投入 <Field type=c_ulong, ofs=0, size=4> ここでクラッシュ ↓ここの浮動小数点を使う方法を試したかっただけですが。 ビットを数える・探すアルゴリズム ttp://www.nminoru.jp/~nminoru/programming/bitcount.html
| - VBScriptについて必死に話し合うスレ
852 :デフォルトの名無しさん[sage]:2014/11/05(水) 11:11:47.93 ID:9gbL5eJJ - 学校でC言語習った後にVB・・・3だったか、やった時の衝撃と同じようなもんか。
目の前のコード見てもさっぱり分からないけど、解説してもらって見えない部分が分かればすっきりする。
| - くだすれPython(超初心者用) その24
944 :デフォルトの名無しさん[sage]:2014/11/05(水) 12:01:37.33 ID:9gbL5eJJ - >>943
.asString() でキャストするのは ctypes では出来ないらしく str()もcast()もクラッシュします。 コードはこんな感じ from ctypes import * #class utest(Structure): class utest(Union): pass utest._fields_ = [("i", c_uint), ("f", c_float)] print(utest.i) print(utest.f) #utest.f = 0.5468 utest.f = cast(0.5468,c_float) ←これはミス utest.i print(utest.i) #これ以降がクラッシュしたり type(utest.f) utest.f print(str(utest.f)) print(cast(utest.f,c_float))
| - くだすれPython(超初心者用) その24
947 :デフォルトの名無しさん[sage]:2014/11/05(水) 13:15:47.45 ID:9gbL5eJJ - できました。感謝。なるほどなるほどー
基本を押さえてないのに共用体で検索してたから実際のコードがさっぱり出てこなくて。 x = utest(f=0.5468) print(x) print(x.i) print(x.f) <__main__.utest object at 0x02E88D50> 1057749782 0.5468000173568726
|
|