Datentypen aus anderen Sprachen in C#



  • Hi,

    Ich hab eine dll eingebunden, in einer Funktion soll ich ein
    DWORD übergeben(sind glaub 4bytes oder?), kann ich dann einfach
    nen int32 übergeben? Gibts ne Liste mit Vergleichsdatentypen?



  • adonis schrieb:

    Ich hab eine dll eingebunden, in einer Funktion soll ich ein
    DWORD übergeben(sind glaub 4bytes oder?), kann ich dann einfach nen int32 übergeben?

    Ja.

    Gibts ne Liste mit Vergleichsdatentypen?

    Mir nicht bekannt, gibt es aber sicher irgendwo in der MSDN.



  • Danke für die Antwort, nun hab ich aber noch ein anderes Problem.

    DllExport void MSimMove(UCHAR chX, UCHAR chY, UCHAR chZ);
    

    uchar, gibts nix in c#. hab was gelesen über unmanagedtype und marshalln.
    is das die richtige Richtung?

    In c# scheint char ja generell 16Bit zu sein für Unicode. Byte wär 8Bit,
    gibt aber nicht die Möglichkeit zu sagen unsigned. Find ich einbischen doof,
    scheint nur int unsigned zu geben, die sind aber min 16Bit, was Verschwendung wäre
    wenn ich nur 8 brauche...



  • 'char' in C sind fast immer 8 Bit. Insbesondere ist 'UCHAR' unter Windows ein 8-Bit-unsigned-Typ. Verwende in C# einfach 'byte', dann bist Du fein raus.



  • In c# scheint char ja generell 16Bit zu sein für Unicode. Byte wär 8Bit,
    gibt aber nicht die Möglichkeit zu sagen unsigned.

    Stellt eine 8-Bit-Ganzzahl ohne Vorzeichen dar.

    In den folgenden Tabellen werden die vom Byte -Typ verfügbar gemachten Member aufgeführt.

    Stellt eine 8-Bit-Ganzzahl mit Vorzeichen dar.

    In den folgenden Tabellen werden die vom SByte -Typ verfügbar gemachten Member aufgeführt.

    vllt. hilft das weiter



  • Ich war leicht verwirrt (genauso wie anscheinend Knuddelbär).

    adonis schrieb:

    In c# scheint char ja generell 16Bit zu sein für Unicode. Byte wär 8Bit,
    gibt aber nicht die Möglichkeit zu sagen unsigned. Find ich einbischen doof,
    scheint nur int unsigned zu geben, die sind aber min 16Bit, was Verschwendung wäre
    wenn ich nur 8 brauche...

    => 'byte' *ist* unsigned in C#!

    (Es gibt auch signed Bytes, dann halt per 'sbyte'.)



  • Cool, danke. Also doch byte, mich hat dieses unsigned ein wenig irritiert.


Anmelden zum Antworten