/- Copyright (c) 2019 Microsoft Corporation. All rights reserved. Released under Apache 2.0 license as described in the file LICENSE. Author: Leonardo de Moura -/ module prelude public import Init.Data.ByteArray.Basic import Init.Data.String.Defs import Init.Data.UInt.Basic set_option doc.verso true /-- Interprets a {name}`ByteArray` of size 8 as a little-endian {name}`UInt64`. Panics if the array's size is not 8. -/ public def ByteArray.toUInt64LE! (bs : ByteArray) : UInt64 := assert! bs.size == 8 (bs.get! 7).toUInt64 <<< 0x38 ||| (bs.get! 6).toUInt64 <<< 0x30 ||| (bs.get! 5).toUInt64 <<< 0x28 ||| (bs.get! 4).toUInt64 <<< 0x20 ||| (bs.get! 3).toUInt64 <<< 0x18 ||| (bs.get! 2).toUInt64 <<< 0x10 ||| (bs.get! 1).toUInt64 <<< 0x8 ||| (bs.get! 0).toUInt64 /-- Interprets a {name}`ByteArray` of size 8 as a big-endian {name}`UInt64`. Panics if the array's size is not 8. -/ public def ByteArray.toUInt64BE! (bs : ByteArray) : UInt64 := assert! bs.size == 8 (bs.get! 0).toUInt64 <<< 0x38 ||| (bs.get! 1).toUInt64 <<< 0x30 ||| (bs.get! 2).toUInt64 <<< 0x28 ||| (bs.get! 3).toUInt64 <<< 0x20 ||| (bs.get! 4).toUInt64 <<< 0x18 ||| (bs.get! 5).toUInt64 <<< 0x10 ||| (bs.get! 6).toUInt64 <<< 0x8 ||| (bs.get! 7).toUInt64