[C#] typecasting

Pagina: 1
Acties:

  • JeroenB
  • Registratie: November 1999
  • Laatst online: 10-07 20:20
Stel ik heb een bytearray en wil daarin 4 bytes tegelijk schrijven met een integer. Kan dat? Ik krijg foutmeldingen als ik het op de traditionele typecasting manier probeer :)

Sowieso vraag ik me af of het uberhaupt kan - wordt de integer dan niet gewoon geconverteerd naar een byte ipv dat'ie over 4 bytes wordt verspreid?

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 25-08 12:28

Janoz

Moderator Devschuur®

!litemod

Wat versta je onder 'traditionele' typecasting? Ik heb een vermoeden dat je het op de C manier probeert. Dat is al sinds c++ wat depricated :). Beste manier is waarschijnlijk om een soort struct te maken die de geheugenruimte van 4 bytes en 1 long deelt. Let trouwens wel op dat de werking van je programma dan af gaat hangen van de endianness van de architectuur!

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Scare360
  • Registratie: Juli 2001
  • Laatst online: 24-08 12:59
Convert.

  • Twee Dee
  • Registratie: Juli 2002
  • Laatst online: 17:21

Twee Dee

Morgen weer een ondertitel.

Janoz schreef op 20 januari 2003 @ 11:18:
Let trouwens wel op dat de werking van je programma dan af gaat hangen van de indianness van de architectuur!
Volgens mij bedoel je big-endian of little-endian?

Big indian :+

Luister nou gewoon naar me, dat voorkomt dat ik later "zie je wel" moet zeggen.


  • whoami
  • Registratie: December 2000
  • Laatst online: 22:42
De Convert class heeft idd een aantal static methods die zorgen voor conversie/casting tsn data-types.

https://fgheysels.github.io/


  • JeroenB
  • Registratie: November 1999
  • Laatst online: 10-07 20:20
Het probleem is dat de DirectX9-extensies voor managed code nogal traag dreigen te worden: Ik kan in DirectDraw wel een Lock() aanroepen op een surface, maar krijg dan bij een 640x480x32bpp een byte[640*4, 480*4] terug. Als ik nou gewoon een plaatje heb dat ik daarheen wil kopieren dan wil ik dat eigenlijk "hard" in die array gooien. Maar dat is dus waarschijnlijk een beetje tricky (omdat ik bijv. de Convert-methode verdenk van een bijzonder lange en pijnlijke foreach-loop :))

Overigens, misschien is dat niet eens de correcte manier met DirectX9/Managed Code, maar de documentatie ervan is nogal schaars :( Ook op MSDN staan alleen class- en method-definities zonder enige uitleg van werking of gebruik.

[ Voor 23% gewijzigd door JeroenB op 20-01-2003 13:39 . Reden: Laatste alinea toegevoegd ]


  • EfBe
  • Registratie: Januari 2000
  • Niet online
JeroenB schreef op 20 January 2003 @ 11:13:
Stel ik heb een bytearray en wil daarin 4 bytes tegelijk schrijven met een integer. Kan dat? Ik krijg foutmeldingen als ik het op de traditionele typecasting manier probeer :)

Sowieso vraag ik me af of het uberhaupt kan - wordt de integer dan niet gewoon geconverteerd naar een byte ipv dat'ie over 4 bytes wordt verspreid?
Niet direct. Je kunt met unsafe code een pointer naar het bytearray verkrijgen en met de pointeraritmetic van C# het array vullen. Je kunt ook een shift/and routinetje maken die een int in 4 bytes opdeelt en al naargelang de endian-voorkeur de bytes aan je teruggeeft. :)

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


  • EfBe
  • Registratie: Januari 2000
  • Niet online
JeroenB schreef op 20 January 2003 @ 13:36:
Het probleem is dat de DirectX9-extensies voor managed code nogal traag dreigen te worden: Ik kan in DirectDraw wel een Lock() aanroepen op een surface, maar krijg dan bij een 640x480x32bpp een byte[640*4, 480*4] terug. Als ik nou gewoon een plaatje heb dat ik daarheen wil kopieren dan wil ik dat eigenlijk "hard" in die array gooien. Maar dat is dus waarschijnlijk een beetje tricky (omdat ik bijv. de Convert-methode verdenk van een bijzonder lange en pijnlijke foreach-loop :))
Oooh, je zit weer te democoden in de baas zn tijd ;) hehe. Check deze code:
http://msdn.microsoft.com...l/html/csharp11152001.asp

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


  • JeroenB
  • Registratie: November 1999
  • Laatst online: 10-07 20:20
Die link ziet er nuttig uit! Thanks :)

Enne... Nee ik ben druk bezig, alleen dit probleem had ik thuis en ik dacht er nu net aan *ahem*
Pagina: 1