I believe there is no safe (that is, unsafe-free) way to discover the native byte order. In a sense, this is because depending on the native byte order is intrinsically unsafe. It is by definition not portable. It is a terrible design decision.
By the way, that program may work but it's not sound. It has a hidden assumption about how bytes are laid out in arrays and the correspondence with words. (Some machines, like the PDP-11, actually confused some matters like this). This is a better way to discover the byte order, at which point you can use portable methods from encoding/binary: https://play.golang.org/p/7svQ66wl7I -rob On Thu, Aug 24, 2017 at 8:24 AM, <djad...@gmail.com> wrote: > It use unsafe, but works even in playground: > https://play.golang.org/p/S1rw157M9C > > > On Wednesday, August 23, 2017 at 3:49:39 PM UTC+3, Christian von Kietzell > wrote: >> >> Hi, >> >> I've stumbled across a problem I don't know how to solve. >> >> I'm trying to read (from stdin) four bytes into a uint32 value. Those >> bytes are provided in _native_ byte order by an external program.[*1] >> >> Since I've found nothing in the standard library to determine the >> machine's native byte order I can't decide whether to use >> binary.BigEndian.Uint32 or binary.LittleEndian.Uint32. >> >> Is there a way without involving package unsafe? Am I missing something >> obvious? >> >> [*1] The data comes from a web browser extension using the native >> messaging API, which specifies that messages sent to external programs >> are prefixed with the 32-bit length of the message in native byte order. >> >> >> Thanks, >> Chris >> >> -- >> Nothing to see here. Move along. > > -- > You received this message because you are subscribed to the Google Groups > "golang-nuts" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to golang-nuts+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/d/optout. -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.