Bir delege sahip bir .dll (kendi değil) var. Bu temsilci Geri arama fonksiyonu:
"CallBackFN (ushort işlem kodu, ıntptr yük, uint boyutu, uint LocalIP)" C# nasıl Byte [] 'den IntPtr'ye dön
cevap
Marshal.Copy'e baktınız mı?
http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.marshal.copy.aspx
this Stack Overflow question göre, yapabileceğiniz kullanabilirsiniz:
var byteArray = new byte[dataBlockSize];
System.Runtime.InteropServices.Marshal.Copy(payload, byteArray, 0, dataBlockSize);
Downvoter'ın açıklamasını ister misiniz? –
Eğer 's byte:
byte[] managedArray = new byte[size];
Marshal.Copy(pnt, managedArray, 0, size);
o bayt değilse, Marsha boyut parametresi l.Copy, dizideki öğelerin sayısıdır, bayt boyutu değil. Dolayısıyla, bir bayt [] dizisinden ziyade bir int [] dizisi olsaydı, boyut parametresinin iletilen iletinin içinden geçtiğini varsayarak, kopyalanacak öğelerin doğru sayısını elde etmek için 4 (bayt başına bayt) olarak bölmeniz gerekirdi. bayttan. Eğer performansı gerekiyorsa
Teşekkürler. Bence bu kadar. Dizi bayt değilse, cevabın ilk yarısı için "boyut" – Gabriel
+ 1'i değiştirmeyi deneyeceğim. Gerçekten, diğer yarısı ... Okumadım bile :) – Bitterblue
, doğrudan kullanın:
unsafe {
byte *ptr = (byte *)buffer.ToPointer();
int offset = 0;
for (int i=0; i<height; i++)
{
for (int j=0; j<width; j++)
{
float b = (float)ptr[offset+0]/255.0f;
float g = (float)ptr[offset+1]/255.0f;
float r = (float)ptr[offset+2]/255.0f;
float a = (float)ptr[offset+3]/255.0f;
offset += 4;
UnityEngine.Color color = new UnityEngine.Color(r, g, b, a);
texture.SetPixel(j, height-i, color);
}
}
}
- 1. Byte [] 'den XmlTextReader'a
- 2. AllocateAndInitializeSid işlevi C# den nasıl çağrılır?
- 3. A1'den en son kullanılan son hücreye dön
- 4. Java'da C# System.DBNull.value 'den nasıl yararlanabilirim?
- 5. Nasıl IIS C# den yönetmek için?
- 6. net-snmp tuzakları "C" den nasıl gönderilir
- 7. Bir USB cihazını C# 'den nasıl çalıştırabilirim?
- 8. Bir int [] to byte [] için C#
- 9. Yerel C++ 'den C#,/clr veya COM?
- 10. Bir dize UTF8'den Latin1'e C/C++ nasıl dönüştürülür?
- 11. Byte Buddy
- 12. byte [], başka bir byte [] özel konumundan kopyalamaksızın nasıl alınır?
- 13. C++ CLR dizisinde <System :: Byte> dizisi nasıl dönüştürülür?
- 14. C# - "byte []" ın bir bölümünü başka bir diziye nasıl kopyalayabilirsiniz?
- 15. kaydet Byte Dizisi
- 16. Sipariş nasıl tanımlanır [Array [Byte]]?
- 17. Nasıl yapılır: 'byte []' için 'System.Data.Linq.Binary'
- 18. Byte [] ASCII
- 19. Golang byte
- 20. UTF8'den ASCII'ye dönüştürme
- 21. XMLDocument -> Byte [] ... XMLDocument'e nasıl geri dönülür?
- 22. C: 'den bir url protokolünü: - Dosya:
- 23. Neden dön (0 * ap ++)?
- 24. den
- 25. C# 4.0: Pdf'yi byte [] 'a dönüştürün ve tersi
- 26. C# - İki Int32'den bir Int64 oluşturma
- 27. excelfile "* .xlsx" den bir dizi içine C#
- 28. İlk 16 Byte Kaldır?
- 29. Bitmap Sınıfı Bitmap C kullanmadan BitmapImage için Byte dizisi #
- 30. Desteklenen byte [] ile Float []
olası yinelenen: http://stackoverflow.com/questions/5298930/how-to-get-byte-from-intptr-in-c –