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.
Benutzeravatar
name
User
Beiträge: 254
Registriert: Dienstag 5. September 2006, 16:35
Wohnort: Wien
Kontaktdaten:

ctypes: Multidimensionaler Array

Beitragvon name » Sonntag 21. Dezember 2008, 19:10

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

Beitragvon sma » Sonntag 21. Dezember 2008, 19:18

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

Beitragvon Trundle » Sonntag 21. Dezember 2008, 19:19

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:

Beitragvon name » Sonntag 21. Dezember 2008, 19:20

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.

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder