123456789101112131415161718192021222324252627282930 |
- discard """
- output: '''
- @[48, 57]
- '''
- """
- # bug #7238
- type ByteArrayBE*[N: static[int]] = array[N, byte]
- ## A byte array that stores bytes in big-endian order
- proc toByteArrayBE*[T: SomeInteger](num: T): ByteArrayBE[sizeof(T)]=
- ## Convert an integer (in native host endianness) to a big-endian byte array
- ## Notice the result type
- const N = T.sizeof
- for i in 0 ..< N:
- result[i] = byte((num shr ((N-1-i) * 8)) and high(int8))
- let a = 12345.toByteArrayBE
- echo a[^2 .. ^1] # to make it work on both 32-bit and 64-bit
- #---------------------------------------------------------------------
- type
- Payload = object
- something: int
- vals: UncheckedArray[int]
- static:
- doAssert(compiles(offsetOf(Payload, vals)))
|