## The Python Imaging Library.# $Id$## Binary input/output support routines.## Copyright (c) 1997-2003 by Secret Labs AB# Copyright (c) 1995-2003 by Fredrik Lundh# Copyright (c) 2012 by Brian Crowell## See the README file for information on usage and redistribution.#"""Binary input/output support routines."""from__future__importannotationsfromstructimportpack,unpack_from[docs]defi8(c:bytes)->int:returnc[0] [docs]defo8(i:int)->bytes:returnbytes((i&255,)) # Input, le = little endian, be = big endian[docs]defi16le(c:bytes,o:int=0)->int:""" Converts a 2-bytes (16 bits) string to an unsigned integer. :param c: string containing bytes to convert :param o: offset of bytes to convert in string """returnunpack_from("<H",c,o)[0] [docs]defsi16le(c:bytes,o:int=0)->int:""" Converts a 2-bytes (16 bits) string to a signed integer. :param c: string containing bytes to convert :param o: offset of bytes to convert in string """returnunpack_from("<h",c,o)[0] [docs]defsi16be(c:bytes,o:int=0)->int:""" Converts a 2-bytes (16 bits) string to a signed integer, big endian. :param c: string containing bytes to convert :param o: offset of bytes to convert in string """returnunpack_from(">h",c,o)[0] [docs]defi32le(c:bytes,o:int=0)->int:""" Converts a 4-bytes (32 bits) string to an unsigned integer. :param c: string containing bytes to convert :param o: offset of bytes to convert in string """returnunpack_from("<I",c,o)[0] [docs]defsi32le(c:bytes,o:int=0)->int:""" Converts a 4-bytes (32 bits) string to a signed integer. :param c: string containing bytes to convert :param o: offset of bytes to convert in string """returnunpack_from("<i",c,o)[0] [docs]defsi32be(c:bytes,o:int=0)->int:""" Converts a 4-bytes (32 bits) string to a signed integer, big endian. :param c: string containing bytes to convert :param o: offset of bytes to convert in string """returnunpack_from(">i",c,o)[0] [docs]defi16be(c:bytes,o:int=0)->int:returnunpack_from(">H",c,o)[0] [docs]defi32be(c:bytes,o:int=0)->int:returnunpack_from(">I",c,o)[0] # Output, le = little endian, be = big endian[docs]defo16le(i:int)->bytes:returnpack("<H",i) [docs]defo32le(i:int)->bytes:returnpack("<I",i) [docs]defo16be(i:int)->bytes:returnpack(">H",i) [docs]defo32be(i:int)->bytes:returnpack(">I",i)