OVH Cloud OVH Cloud

StringBuilder et caractère 0x00.

1 réponse
Avatar
Pascal
Bonjour,
j'utilise une fonction dans une dll qui renvoie une chaine.

Pour cela j'ai déclaré:
[DllImport("i2c32200.dll", CharSet= CharSet.Ansi)]
private static extern uint I2CGetMasterRxMsg(int length, StringBuilder
DataBuffer);

L'appel se fait trés bien:
StringBuilder MonBuffer= new StringBuilder(50);
uint Retour= I2CGetMasterRxMsg(MonBuffer.Capacity, MonBuffer);

Le problème vient que dans la chaine de retour j'ai des caractères 0x00,
C# considére qu'il s'agit de la fin de chaine et perd tout ce qui vient
après.

Comment lui imposer une taille fixe qui me permettrait de récupérer les
caractères suivants ?

Merci.
PS. Pour me répondre, retirer "france." de l'adresse email

1 réponse

Avatar
msnews.microsoft.com
a mon humble avi, c'est pas encore une string, c'est plutot un byte[].
manque une transformation en string, et ça c'est lié à l'encodage.

cqfd :)


"Pascal" wrote in message
news:
Bonjour,
j'utilise une fonction dans une dll qui renvoie une chaine.

Pour cela j'ai déclaré:
[DllImport("i2c32200.dll", CharSet= CharSet.Ansi)]
private static extern uint I2CGetMasterRxMsg(int length, StringBuilder
DataBuffer);

L'appel se fait trés bien:
StringBuilder MonBuffer= new StringBuilder(50);
uint Retour= I2CGetMasterRxMsg(MonBuffer.Capacity, MonBuffer);

Le problème vient que dans la chaine de retour j'ai des caractères 0x00,
C# considére qu'il s'agit de la fin de chaine et perd tout ce qui vient
après.

Comment lui imposer une taille fixe qui me permettrait de récupérer les
caractères suivants ?

Merci.
PS. Pour me répondre, retirer "france." de l'adresse email