[過去ログ] 【まず1嫁】くだすれPython(超初心者用) その59 (1002レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
695
(1): デフォルトの名無しさん [sage] 2024/06/21(金) 10:29:55.02 ID:M8EEKVG+(1/3) AAS
>>693
693(3): デフォルトの名無しさん [sage] 2024/06/20(木) 18:12:29.06 ID:pudWG0gF(1) AAS
>>688
("wOdList", POINTER(c_uint16))

a = aa()
a.wOdList = (c_uint16 * size)()

wResがwOdListのsizeだったりするのかな?
from ctypes import *
class aa(Structure):
_fields_ = [('a', c_uint32), ('b', POINTER(c_uint16))]

a = aa()
a.a # 0
a.b # <__main__.LP_c_ushort object at 0x000002033996A340>
a.__sizeof__() # 104
sizeof(a) # 16
a.b = (c_uint16 * 4)(9,8,7,6)
a.b # <__main__.LP_c_ushort object at 0x000002033996AAC0>
a.__sizeof__() # 104
sizeof(a) # 16

だめやん
697
(1): デフォルトの名無しさん [] 2024/06/21(金) 15:09:56.96 ID:M8EEKVG+(2/3) AAS
そういう問題じゃなくて
常にPOINTER型の容量分しか無いのは可笑しい
698
(1): デフォルトの名無しさん [sage] 2024/06/21(金) 15:17:35.67 ID:M8EEKVG+(3/3) AAS
少なくとも >>688
688(6): デフォルトの名無しさん [sage] 2024/06/19(水) 22:24:53.92 ID:jr8KvPbD(1) AAS
ctypesで構造体宣言するときに、以下のようにc側が不完全型の配列定義であった場合は、どのように宣言すればよいでしょうか。

typedef struct aa
{
uint32 eListType;
uint16 wRes;
uint16 wOdList[];
}

class aa(Structure):
_fields_ = [("eListType",c_uint32),
("wRes",c_uint16),
("wOdList",???)
]
の質問に対して正しい答えは

from ctypes import *

class aa(Structure):
_fields_ = [('a', c_uint32), ('b', POINTER(c_uint16))]

a = aa()
a.b = (c_uint16 * 4)() # これは間違い
sizeof(a) # 16

class bb(Structure):
_fields_ = [('a', c_uint32), ('b', (c_uint16 * 4))]

b = bb()
sizeof(b) # 12

class cc(Structure):
_fields_ = [('a', c_uint32), ('b', (c_uint16 * 8))]

c = cc()
sizeof(c) # 20
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 1.411s*