Python bytes()

Python bytes() function is used to create an immutable sequence of bytes. You can think of a bytes object as a read-only array of bytes, which means you can't change its contents once you create it. The function is useful when dealing with binary data, such as reading from a file in binary mode or working with network sockets, where immutability can be important for data integrity.
Table of Contents

Understanding Python bytes() Function

Python bytes() function creates an immutable sequence of bytes. You can think of it like a read-only version of a bytearray. It’s a way to represent a fixed set of byte values, typically used when dealing with binary data, such as file contents or data received over a network. Once you create a bytes object, you can’t change its contents. To create a bytes object, you can give bytes() a string (must provide an encoding for this), a number (creates a sequence of null bytes of that length), or a sequence of integers (each between 0 to 255).

Syntax of Python bytes()

bytes_object = bytes(source, encoding, errors)

Explanation

  • bytes_object: Variable will hold the newly created bytes object.
  • bytes(): Built-in function that creates the immutable bytes object.
  • source (optional): Data used to create the bytes object (e.g., a string, integer, or iterable).
  • encoding (optional): If source is a string, this argument specifies the encoding (e.g., ‘utf-8’).
  • errors (optional): If source is a string, this specifies how to handle encoding errors.

Example of Python bytes()

empty_bytes = bytes()
print(empty_bytes)

Explanation

  • empty_bytes = bytes(): Creates an empty bytes object and assigns it to the variable empty_bytes.
  • print(empty_bytes): Prints the empty bytes object.

Output

b”


bytes() Parameters

Python bytes() function can accept up to three parameters, but they are all optional. The first parameter, source, is the data you want to use to create the bytes object. This can be a string, an integer, or an iterable object like a list. If source is a string, you must also provide the encoding parameter, which tells Python how to convert the string into bytes (e.g., ‘utf-8’, ‘ascii’). The errors parameter, optional when the source is a string, determines how encoding errors are handled. If the source is an integer, it will create that number of null bytes.

Syntax

bytes_object = bytes(source, encoding, errors)

Example

bytes_from_string = bytes("hello", "utf-8")
print(bytes_from_string)

Output

b’hello’


bytes() Return Value

Python bytes() function always returns a bytes object, an immutable sequence of bytes. The content of the returned bytes object depends on the arguments you provide to the function. If you give no arguments, it returns an empty bytes object. If you provide an integer, it returns a bytes object of that size, filled with null bytes. Providing a string and encoding returns a bytes object representing that string encoded as bytes. If you give an iterable, it returns a bytes object with elements from the iterable.

Example

bytes_object = bytes(5)
print(bytes_object)

Output

b’\x00\x00\x00\x00\x00′


Covert String to Bytes with Python bytes()

To convert a string to a bytes object using Python bytes(), you must provide the string as the first argument and the encoding as the second. The encoding specifies how the characters in the string should be represented as bytes. Standard encodings include ‘utf-8’, ‘ascii’, and ‘latin-1’. The bytes() function will then return a new bytes object that represents the encoded string.

Example

my_string = "café"
bytes_object = bytes(my_string, encoding="utf-8")
print(bytes_object)

Explanation

  • my_string = "café": Assigns the string “café” to the variable my_string.
  • bytes_object = bytes(my_string, encoding="utf-8"): Creates a bytes object from my_string using UTF-8 encoding.
  • print(bytes_object): Prints the bytes object.

Output

b’caf\xc3\xa9′


Covert Integer to Bytes with Python bytes()

When you pass an integer to Python bytes(), it creates a bytes object of that specified size, initialized with null bytes (\x00). Essentially, it’s like allocating a memory block with the given size, where each byte in the block is set to zero. The integer argument determines the length or size of the byte object, not the actual byte values within it.

Example

size = 3
bytes_object = bytes(size)
print(bytes_object)

Explanation

  • size = 3: Assigns the integer 3 to the variable size.
  • bytes_object = bytes(size): Creates a bytes object of size 3, filled with null bytes.
  • print(bytes_object): Prints the bytes object.

Output

b’\x00\x00\x00′


Covert Iterable (List) to Bytes with Python bytes()

You can convert an iterable, such as a list, to a bytes object using Python bytes(), provided that the iterable contains integers between 0 and 255. Each integer in the iterable represents a byte value. The bytes() function will then create a new bytes object containing those byte values in the same order as they appeared in the iterable.

Example

my_list = [72, 101, 108, 108, 111]
bytes_object = bytes(my_list)
print(bytes_object)

Explanation

  • my_list = [72, 101, 108, 108, 111]: Creates a list of integers representing ASCII values for “Hello”.
  • bytes_object = bytes(my_list): Creates a bytes object from the integers in my_list.
  • print(bytes_object): Prints the bytes object.

Output

b’Hello’


Creating a Bytes Object with a Specific Size

To create a Python bytes object of a specific size filled with null bytes, you pass an integer representing the desired size as the argument to the bytes() function. This will return a new bytes object with the specified number of bytes, each initialized to the null byte value (\x00). This is useful when you need a fixed-size buffer of bytes.

Example

size = 7
bytes_object = bytes(size)
print(bytes_object)

Explanation

  • size = 7: Sets the desired size to 7 bytes.
  • bytes_object = bytes(size): Creates a bytes object of size 7, filled with null bytes.
  • print(bytes_object): Prints the bytes object.

Output

b’\x00\x00\x00\x00\x00\x00\x00′


Using Custom Encoding

When converting a string to a Python bytes object using the bytes() function, you can specify a custom encoding other than the default UTF-8. You provide the encoding as the second argument to bytes(). Standard encodings include ‘ascii’, ‘latin-1’, and ‘utf-16’. Choosing the correct encoding is important for correctly representing the characters in your string as bytes.

Example

string = "Héllö"
bytes_object = bytes(string, encoding="latin-1")
print(bytes_object)

Explanation

  • string = "Héllö": Assigns the string “Héllö” to the variable string.
  • bytes_object = bytes(string, encoding="latin-1"): Creates a bytes object from string using Latin-1 encoding.
  • print(bytes_object): Prints the bytes object.

Output

b’H\xe9ll\xf6′


Conclusion

Python bytes() is a fundamental function for working with immutable byte sequences in Python. It allows you to create bytes objects from various sources, including strings, integers, and iterables. Understanding how to use Python bytes with different parameters and encodings is essential when dealing with binary data, text encodings, and tasks that require fixed-size byte buffers. You can use bytes() function to convert various data types into a bytes object. Remember that a bytes object is immutable, so you cannot modify it after it is created.


Also Read

Python callable()

Python chr()


Python Reference

python bytes()

Table of Contents