obtenir pointeur de tableau d'octets dans la jna
J'ai suivantes de code en c# et ont besoin d'une fonctionnalité similaire en java à l'aide de la "JNA":
IntPtr pImage = SerializeByteArrayToIntPtr(imageData);
public static IntPtr SerializeByteArrayToIntPtr(byte[] arr)
{
IntPtr ptr = IntPtr.Zero;
if (arr != null && arr.Length > 0)
{
ptr = Marshal.AllocHGlobal(arr.Length);
Marshal.Copy(arr, 0, ptr, arr.Length);
}
return ptr;
}
- l'utilisation du Système.arrayCopy en java
- si vous voulez que le transfert de byte[] en int[], ByteBuffer.asIntBuffer() va probablement faire ce dont vous avez besoin.
- Je veux pointeur de la ref du byte[]
- Est C#
byte
un entier non signé de 8 bits entier? Il est équivalent à C 8-bitsunsigned char
. Mais, Javabyte
est signé 8 bits en complément à deux entier. Alors, il ne correspond pas aux. Probablement besoin dec & 0xFF
. Pour la préservation de la référence C# de type entier en paramètre, utilisezIntByReference
ouByteByReference
. Plus utile la poste, à stackoverflow.com/questions/333151/...
Vous devez vous connecter pour publier un commentaire.
Vous souhaitez utiliser De mémoire
L'utiliser ainsi:
Être conscient que vous avez besoin de garder une référence forte à la Mémoire de l'objet, aussi longtemps que le code natif qui va utiliser la mémoire a besoin (sinon, la Mémoire de l'objet va récupérer le natif de la mémoire lorsqu'il est garbage collector).
Si vous avez besoin de plus de contrôle sur le cycle de vie de la patrie, de la mémoire, puis la carte en fonction malloc() et free() de la libc et de les utiliser à la place.