endianess.go 564 B

12345678910111213141516171819202122232425262728
  1. package ip
  2. // Taken from a patch by David Anderson who submitted it
  3. // but got rejected by the golang team
  4. import (
  5. "encoding/binary"
  6. "unsafe"
  7. )
  8. // NativeEndian is the ByteOrder of the current system.
  9. var NativeEndian binary.ByteOrder
  10. func init() {
  11. // Examine the memory layout of an int16 to determine system
  12. // endianness.
  13. var one int16 = 1
  14. b := (*byte)(unsafe.Pointer(&one))
  15. if *b == 0 {
  16. NativeEndian = binary.BigEndian
  17. } else {
  18. NativeEndian = binary.LittleEndian
  19. }
  20. }
  21. func NativelyLittle() bool {
  22. return NativeEndian == binary.LittleEndian
  23. }