J'ai un tableau C++ unidimensionnel contenant les valeurs UInt8
- Je voudrais convertir ces valeurs et les placer dans un tableau 2D C# byte
. Actuellement, mon code me donne des valeurs incorrectes. Voici mon code:Conversion de valeurs UInt8 C++ en tableau d'octets C#
IntPtr ptr = GetDataFromCPPSide();
byte[,] data = new byte[dimension1, dimension2];
for(int i = 0; i < dimension1; i ++)
{
for(int j = 0; j < dimension2; j++)
{
data[i, j] = Marshal.ReadByte((IntPtr)(ptr.ToInt64() + j + i * dimension2) * 1));
}
}
Maintenant, cela ne convertit correctement certaines valeurs. Je suis sûr que cela a quelque chose à voir avec la façon dont je convertis la valeur dans la boucle for
. J'ai placé une vérification sur le côté C++ et les valeurs sont renvoyées correctement. Des idées?
Lorsque vous avez affaire à un octet à quelque chose ou à des transformations vice versa *, pensez toujours à l'encodage. L'absence de cela est un grand drapeau rouge. – Tigran
@Tigran Pourriez-vous élaborer? – Roka545
Vous devez utiliser l'encodage lors de la conversion d'un flux d'octets en type de données. Est-ce Unicode? Utf-8? Autre chose ? Pas nécessaire * que * est votre problème, mais considérez cela de toute façon. C'est ce que c'est un commentaire et non une réponse. – Tigran