Cherche l'équivalent en C# de ce que l'on peut faire en C

Résolu
jamesbidon Messages postés 8 Date d'inscription vendredi 25 janvier 2008 Statut Membre Dernière intervention 8 décembre 2009 - 17 juin 2009 à 20:06
jamesbidon Messages postés 8 Date d'inscription vendredi 25 janvier 2008 Statut Membre Dernière intervention 8 décembre 2009 - 18 juin 2009 à 18:56
Alors voila après 1 heure a chercher sur google et sur divers sites , je n'ai rien trouver qui me convenais :
je cherche a faire l'équivalent de ce code en C en C#

char Buffer[0x400];
void AddWord( unsigned short value )
{
*((unsigned short*)&Buffer[4]) = value;

}

J'ai fait :
char[] Buffer = new char[0x400];
void AddWord(ushort value)
{
(ushort)Buffer[4] = value;

}

Bien sur cela ne marche pas , j'essaye de trouver l'équivalent de ce qu'on aurais fait en C avec les pointeurs

5 réponses

Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
17 juin 2009 à 22:34
Salut,

unsafe
{
    byte[ ] buffer = new byte[ 0x400 ];
    fixed ( byte* pbuffer = buffer )
    {
        *( ( ushort* )&pbuffer[ 4 ] ) = 0xffff;
    }
}
3
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
18 juin 2009 à 09:31
en fait... c'est normal...

unsigned short en C n'a pas la même taille que ushort de C#...

de plus, l'utilisateur des pointeurs est déconseillée en C#

Sébastien FERRAND (blog)
Consultant Sénior
[Microsoft Visual C# MVP]
3
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
18 juin 2009 à 18:37
en moyen plus "managed" tu veux dire..

byte[ ] buffer = new byte[ 0x400 ];
GCHandle gch = GCHandle.Alloc( buffer, GCHandleType.Pinned );
Marshal.WriteInt16( gch.AddrOfPinnedObject( ), 4, unchecked( ( short )0xffff ) );
gch.Free( );
3
jamesbidon Messages postés 8 Date d'inscription vendredi 25 janvier 2008 Statut Membre Dernière intervention 8 décembre 2009
18 juin 2009 à 16:27
Merci beaucoup d'avoir répondus a cette question : oui lunitor je connaissais l'existence du mode unsafe , mais je pensais qu'il y avais un moyen plus "C#" de faire la chose .
Sinon il y a toujours moyen de convertir le short en tableau de byte lui aussi et avec une boucle basique faire "entrer" ce short dans mon buffer , mais bon ça fait tache
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jamesbidon Messages postés 8 Date d'inscription vendredi 25 janvier 2008 Statut Membre Dernière intervention 8 décembre 2009
18 juin 2009 à 18:56
Ha merci beaucoup =)
0
Rejoignez-nous