Mavryk_raw_protocol_alpha.Script_bytesSemantics of logical and bit-shift operators for bytes
bytes_or a b returns the logical or'ed bytes of a and b. If the arguments have different lengths, the shorter one is 0-padded on the left before the logical operation. For example:
0x1200 OR 0x34 = 0x1200 OR 0x0034 = 0x1234 0x0012 OR 0xff = 0x0012 OR 0x00ff = 0x00ff (instead of 0xff)
bytes_and a b returns the logical and'ed bytes of a and b. If the arguments have different lengths, the prefix of the longer one is removed to have the same length as the shorter one before the logical operation. For example:
0x1234 AND 0x30 = 0x34 AND 0x30 = 0x30 0x12f00f AND 0x0fff = 0xf00f AND 0x0fff = 0x000f (instead of 0x0f)
bytes_xor a b returns the logical xor'ed bytes of a and b. If the arguments have different lengths, the shorter one is 0-padded on the left before the logical operation. For example:
0x1200 XOR 0x34 = 0x1200 XOR 0x0034 = 0x1234 0x0012 XOR 0xff = 0x0012 XOR 0x00ff = 0x00ed (instead of 0xed)
bytes_not a returns the logical not'ed bytes of a with the same length of a. For example:
NOT 0xff00 = 0x00ff (instead of 0xff)
val bytes_lsl : bytes -> Script_int.n Script_int.num -> bytes optionbytes_lsl bytes bits returns the bits left shifted bytes of bytes. If bits is more than 64000, it returns None.
The function always returns a longer bytes of the input if bits is not 0. For example:
0x12 LSL 1 = 0x0024 (instead of 0x24) 0x0012 LSL 9 = 0x00002400 (instead of 0x002400 or 0x2400)
val bytes_lsr : bytes -> Script_int.n Script_int.num -> bytesbytes_lsr bytes bits returns the bits right shifted bytes of bytes.
0x1234 LSR 1 = 0x091a 0x1234 LSR 8 = 0x12 (instead of 0x0012)
val bytes_of_nat_be : Script_int.n Script_int.num -> bytesConvert a natural number to bytes using big-endian encoding.
val nat_of_bytes_be : bytes -> Script_int.n Script_int.numConvert bytes to a natural number using big-endian encoding.
val bytes_of_int_be : Script_int.z Script_int.num -> bytesConvert an integer to bytes using big-endian encoding. Negative numbers are handled by two's-complement.
val int_of_bytes_be : bytes -> Script_int.z Script_int.numConvert bytes to an integer using big-endian encoding. Negative numbers are handled by two's-complement.
module Conversion_BE : sig ... end