ctypes: Multidimensionaler Array

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
name
User
Beiträge: 254
Registriert: Dienstag 5. September 2006, 16:35
Wohnort: Wien
Kontaktdaten:

Ich habe folgendes C-struct:

Code: Alles auswählen

struct Board
{
   short filled;
   char board[6][6];
   char colour;
};
Nun wäre meine Frage wie ich dieses mit ctypes.Structure wrappe. Hoffe ihr könnt mir dabei helfen.
Zuletzt geändert von name am Sonntag 21. Dezember 2008, 19:21, insgesamt 1-mal geändert.
Ohloh | Mein Blog | Jabber: segfaulthunter@swissjabber.eu | asynchia – asynchrone Netzwerkbibliothek

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Dies ist geraten nach den Beispielen aus der Dokumentation:

Code: Alles auswählen

from ctypes import *
class Board(Structure):
    _fields_ = [
        ("filled", c_short),
        ("board",  c_char * 6 * 6),
        ("colour", c_char)]
Stefan
Benutzeravatar
Trundle
User
Beiträge: 591
Registriert: Dienstag 3. Juli 2007, 16:45

Code: Alles auswählen

import ctypes

class Board(ctypes.Structure):
    _fields_ = [
        ('filled', ctypes.c_short),
        ('board', (ctypes.c_char * 6) * 6),
        ('colour', ctypes.c_char),
    ]
Edit: zu langsam.
"Der Dumme erwartet viel. Der Denkende sagt wenig." ("Herr Keuner" -- Bertolt Brecht)
Benutzeravatar
name
User
Beiträge: 254
Registriert: Dienstag 5. September 2006, 16:35
Wohnort: Wien
Kontaktdaten:

Oha. das ging ja schnell. Dankeschön!

Blöd ist nur, das ich da meine Zahlen explizit mit chr in chars konvertieren muss, wo mir das meine C-Helper doch implizit gemacht haben :-)

EDIT: s/c_char/c_byte/ löst auch das ;)
Ohloh | Mein Blog | Jabber: segfaulthunter@swissjabber.eu | asynchia – asynchrone Netzwerkbibliothek

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.
Antworten