Python’s built-in bytearray()
method takes an iterable such as a list of integers between 0 and 256, converts them to bytes between 00000000
and 11111111
, and returns a new array of bytes as a bytearray
class.
Here’s a minimal example that creates a bytearray
from three integers stored in a list:
>>> bytearray([1, 2, 3]) bytearray(b'\x01\x02\x03')
The prefix \x
escape sequence means the next two characters are interpreted as hex character codes. For instance, the hex code \x01
is the same as chr(0x01)=16*0+1=1
that’s simply a start of heading SOH
character. (source, ASCII table)
Syntax: bytearray([source[, encoding[, errors]]])
Argument | source (Optional) | Allows you to initialize the bytearray in four different ways (from simple to more complex):? integer –> array has this size and is initialized with 0 bytes: >>> bytearray(4) ? iterable –> integers in the range 0 <= x < 256 are initial bytearray contents:>>> bytearray([1, 2, 3]) ? string and you provide the encoding (and optionally, errors) arguments –> bytearray() converts string to bytes using str.encode() .? object implementing the buffer interface –> initializes the bytes array via a read-only object buffer. |
Argument | encoding (Optional) | The encoding used in case you provide a string argument. Example: 'UTF-8' . |
Argument | errors (Optional) | The action to take when the encoding conversion fails. Only makes sense if source argument is a string. |
Return Value | bytearray | Returns a new object of type bytearray—a sequence of bytes. โญ Without an optional argument, it returns a bytearray with one byte 0: bytearray() –> bytearray(b'') |
Here are some basic usages of the function:
Input :bytearray(4)
Output :Input :
bytearray(b'\x00\x00\x00\x00')
bytearray([1, 2, 3])
Output :Input :
bytearray(b'\x01\x02\x03')
bytearray('hi', 'UTF-8')
Output :bytearray(b'hi')
Want to learn more, we’re going to dive into more examples next!
Check out my new Python book Python One-Liners (Amazon Link).
If you like one-liners, you’ll LOVE the book. It’ll teach you everything there is to know about a single line of Python code. But it’s also an introduction to computer science, data science, machine learning, and algorithms. The universe in a single line of Python!
The book was released in 2020 with the world-class programming book publisher NoStarch Press (San Francisco).
Publisher Link: https://nostarch.com/pythononeliners
Create Bytearray From Single Integer Argument — Examples
The following code shows you how to use the bytearray()
function on simple integer arguments.
# Single Integer Input Argument print(bytearray()) print(bytearray(2)) print(bytearray(4)) ''' bytearray(b'') bytearray(b'\x00\x00') bytearray(b'\x00\x00\x00\x00') '''
If you provide only one input argument, it uses this input argument to determine how many bytes should be created. It just uses bytes with value 0, in byte notation \x00
to fill the bytearray
.
Create ByteArray From Iterable of Integers — Examples
You can also provide an iterable argument to obtain a new bytearray:
# Iterable Input Argument print(bytearray([1, 1, 1])) print(bytearray([14])) print(bytearray({9, 8, 7})) ''' bytearray(b'\x01\x01\x01') bytearray(b'\x0e') bytearray(b'\x08\t\x07') '''
The iterable must consist of a number of integers between 0 and 256. If you fail to do so, Python will throw a ValueError:
How to Fix “ValueError: byte must be in range(0, 256)”
If you use the bytearray()
function on an iterable that contains at least one integer greater than the maximum number representable by 8 bits, namely 256, or smaller than 0, Python will throw a ValueError: byte must be in range(0, 256)
. You can fix it by ensuring that each number in your iterable can actually be represented by 8 bits and falls into the interval 0 to 256.
Here’s an example of the ValueError where you use a number larger or equal than 256:
>>> bytearray([999]) Traceback (most recent call last): File "<pyshell#6>", line 1, in <module> bytearray([999]) ValueError: byte must be in range(0, 256)
Another example when using a number smaller than 0:
>>> bytearray([-10]) Traceback (most recent call last): File "<pyshell#8>", line 1, in <module> bytearray([-10]) ValueError: byte must be in range(0, 256)
Fix it by modifying the numbers to lie within the interval 0 to 256:
>>> bytearray([255]) bytearray(b'\xff')
Summary
Python’s built-in bytearray()
function allows you to create a new bytearray
an intialize it in four different ways (from simple to more complex):
๐ integer –> array has this size and is initialized with 0 bytes:
>>> bytearray(4) bytearray(b'\x00\x00\x00\x00')
๐ iterable –> integers in the range 0 <= x < 256
are initial bytearray contents:
>>> bytearray([1, 2, 3]) bytearray(b'\x01\x02\x03')
๐ย string and you provide the encoding (and optionally, errors) arguments –> bytearray()
converts string to bytes using str.encode()
.
>>> bytearray('hi', 'UTF-8') bytearray(b'hi')
๐ object implementing the buffer interface –> initializes the bytes array via a read-only object buffer.
๐ Recommended Tutorial: Python Bytes vs ByteArray
Do you want to boost your Python skills in a fun and easy-to-consume way? Consider the following resources and become a master coder!
Where to Go From Here?
Enough theory. Letโs get some practice!
Coders get paid six figures and more because they can solve problems more effectively using machine intelligence and automation.
To become more successful in coding, solve more real problems for real people. Thatโs how you polish the skills you really need in practice. After all, whatโs the use of learning theory that nobody ever needs?
You build high-value coding skills by working on practical coding projects!
Do you want to stop learning with toy projects and focus on practical code projects that earn you money and solve real problems for people?
๐ If your answer is YES!, consider becoming a Python freelance developer! Itโs the best way of approaching the task of improving your Python skillsโeven if you are a complete beginner.
If you just want to learn about the freelancing opportunity, feel free to watch my free webinar โHow to Build Your High-Income Skill Pythonโ and learn how I grew my coding business online and how you can, tooโfrom the comfort of your own home.