A consecutive sequence of variables of the data type byte, in computer programming, is known as a byte array. An array is one of the most basic data structures, and a byte is the smallest standard scalar type in most programming languages. A byte array can be invaluable when reading in files stored in an unknown or arbitrary binary format, or when a large amount of data needs to be efficiently stored to save memory. There also are some instances in which a byte array can be used to store string data to help keep memory usage down. Using a byte array can lead to some optimizations that can make accessing and changing information in the array faster than it would be with arrays of other types.
The standard definition of a byte is a data type that contains 8 bits. With 8 bits, a byte can hold values between zero and 255. If the byte is signed, meaning it also can hold negative values, then one bit is dedicated to indicating the positive or negative property of the byte, leaving only 7 bits in which to store information. A signed byte can have a value between -127 and 127.
The size of a byte, however, is not always implemented the same way within certain computer languages. This can be the result of a lack of detail in the language specifications, or because of changing system architectures in which an 8-bit byte is not possible, or incredibly inefficient. The use of a byte in an array does not always mean it will be a sequence of 8-bit bytes. On some systems, a byte array could easily be made up of words with 16 bits or long integers with 32 bits.
A byte is usually the smallest scalar data type available in a language, so they can be used to read in binary files for decoding. A byte array also can be used in certain instances to pass pre-constructed image information to a graphics card. There are functions in some libraries in lower-level computer languages that use byte arrays as return types for information.
Once a byte array has been allocated in memory, it is possible to use some optimizations to increase access speed. By creating arrays with sizes that are powers of two, such as 16, 32 or 64, bit-shifting operations can be used to increase the speed of calculating an indexed address, which can be especially useful when dealing with multi-dimensional arrays. In languages with direct pointer access, an array can be walked through using the very fast increment and decrement operators.