digitalmars.D.learn - getting the bytes of a long
- jc (4/4) Nov 29 2007 hi,
- Bill Baxter (7/13) Nov 29 2007 Take the address, cast to byte, deref byte by byte:
- Regan Heath (5/20) Nov 30 2007 Which means that you can go:
- Jason House (4/21) Nov 30 2007 Does gdc run on any little endian machines? I'm not sure which way arra...
- Bill Baxter (5/27) Nov 30 2007 Yep. Order most definitely depends on endianness. Intel is little
-
Stewart Gordon
(12/15)
Dec 06 2007
"Jason House"
wrote in message
hi, is there a way to stuff the 8 bytes of a long into a byte array other than to use a union to achive that? cheers jc
Nov 29 2007
jc wrote:hi, is there a way to stuff the 8 bytes of a long into a byte array other than to use a union to achive that? cheers jcTake the address, cast to byte, deref byte by byte: (cast(ubyte*)&the_long)[0]; (cast(ubyte*)&the_long)[1]; (cast(ubyte*)&the_long)[2]; ... --bb
Nov 29 2007
Bill Baxter wrote:jc wrote:Which means that you can go: byte[] array = (cast(ubyte*)&the_long)[0..8]; if you want an actual array. Reganhi, is there a way to stuff the 8 bytes of a long into a byte array other than to use a union to achive that? cheers jcTake the address, cast to byte, deref byte by byte: (cast(ubyte*)&the_long)[0]; (cast(ubyte*)&the_long)[1]; (cast(ubyte*)&the_long)[2]; ...
Nov 30 2007
Bill Baxter wrote:jc wrote:Does gdc run on any little endian machines? I'm not sure which way arrays grow on such machines, but I think this could would give the reverse byte order of a big endian machine.hi, is there a way to stuff the 8 bytes of a long into a byte array other than to use a union to achive that? cheers jcTake the address, cast to byte, deref byte by byte: (cast(ubyte*)&the_long)[0]; (cast(ubyte*)&the_long)[1]; (cast(ubyte*)&the_long)[2]; ... --bb
Nov 30 2007
Jason House wrote:Bill Baxter wrote:Yep. Order most definitely depends on endianness. Intel is little endian. If you're planning on sending those bytes over a network you'd better swap em if you've got version(LittleEndian). --bbjc wrote:Does gdc run on any little endian machines? I'm not sure which way arrays grow on such machines, but I think this could would give the reverse byte order of a big endian machine.hi, is there a way to stuff the 8 bytes of a long into a byte array other than to use a union to achive that? cheers jcTake the address, cast to byte, deref byte by byte: (cast(ubyte*)&the_long)[0]; (cast(ubyte*)&the_long)[1]; (cast(ubyte*)&the_long)[2]; ... --bb
Nov 30 2007
"Jason House" <jason.james.house gmail.com> wrote in message news:fipgc3$5ni$1 digitalmars.com... <snip>Does gdc run on any little endian machines? I'm not sure which way arrays grow on such machines, but I think this could would give the reverse byte order of a big endian machine.Array indexes always follow the sign convention of memory addresses. The basic difference between big-endian and little-endian machines is which way the bytes of a number go relative to this sign convention. So yes. As such, accessing an integer as an array of bytes is a common technique for converting between little-endian and big-endian byte orders. Stewart. -- My e-mail address is valid but not my primary mailbox. Please keep replies on the 'group where everybody may benefit.
Dec 06 2007