mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Fix outdated references to byte[]
type (it's now bytes1[]
)
This commit is contained in:
parent
691083c032
commit
ddccd73a4b
@ -234,7 +234,7 @@ This means that the allocatable memory starts at ``0x80``, which is the initial
|
|||||||
of the free memory pointer.
|
of the free memory pointer.
|
||||||
|
|
||||||
Elements in memory arrays in Solidity always occupy multiples of 32 bytes (this is
|
Elements in memory arrays in Solidity always occupy multiples of 32 bytes (this is
|
||||||
even true for ``byte[]``, but not for ``bytes`` and ``string``). Multi-dimensional memory
|
even true for ``bytes1[]``, but not for ``bytes`` and ``string``). Multi-dimensional memory
|
||||||
arrays are pointers to memory arrays. The length of a dynamic array is stored at the
|
arrays are pointers to memory arrays. The length of a dynamic array is stored at the
|
||||||
first slot of the array and followed by the array elements.
|
first slot of the array and followed by the array elements.
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@ Solidity always places new objects at the free memory pointer and
|
|||||||
memory is never freed (this might change in the future).
|
memory is never freed (this might change in the future).
|
||||||
|
|
||||||
Elements in memory arrays in Solidity always occupy multiples of 32 bytes (this
|
Elements in memory arrays in Solidity always occupy multiples of 32 bytes (this
|
||||||
is even true for ``byte[]``, but not for ``bytes`` and ``string``).
|
is even true for ``bytes1[]``, but not for ``bytes`` and ``string``).
|
||||||
Multi-dimensional memory arrays are pointers to memory arrays. The length of a
|
Multi-dimensional memory arrays are pointers to memory arrays. The length of a
|
||||||
dynamic array is stored at the first slot of the array and followed by the array
|
dynamic array is stored at the first slot of the array and followed by the array
|
||||||
elements.
|
elements.
|
||||||
|
@ -139,7 +139,7 @@ a reference to it.
|
|||||||
``bytes`` and ``string`` as Arrays
|
``bytes`` and ``string`` as Arrays
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
Variables of type ``bytes`` and ``string`` are special arrays. A ``bytes`` is similar to ``byte[]``,
|
Variables of type ``bytes`` and ``string`` are special arrays. The ``bytes`` type is similar to ``bytes1[]``,
|
||||||
but it is packed tightly in calldata and memory. ``string`` is equal to ``bytes`` but does not allow
|
but it is packed tightly in calldata and memory. ``string`` is equal to ``bytes`` but does not allow
|
||||||
length or index access.
|
length or index access.
|
||||||
|
|
||||||
@ -148,8 +148,8 @@ third-party string libraries. You can also compare two strings by their keccak25
|
|||||||
``keccak256(abi.encodePacked(s1)) == keccak256(abi.encodePacked(s2))`` and
|
``keccak256(abi.encodePacked(s1)) == keccak256(abi.encodePacked(s2))`` and
|
||||||
concatenate two strings using ``bytes.concat(bytes(s1), bytes(s2))``.
|
concatenate two strings using ``bytes.concat(bytes(s1), bytes(s2))``.
|
||||||
|
|
||||||
You should use ``bytes`` over ``byte[]`` because it is cheaper,
|
You should use ``bytes`` over ``bytes1[]`` because it is cheaper,
|
||||||
since ``byte[]`` adds 31 padding bytes between the elements. As a general rule,
|
since ``bytes1[]`` adds 31 padding bytes between the elements. As a general rule,
|
||||||
use ``bytes`` for arbitrary-length raw byte data and ``string`` for arbitrary-length
|
use ``bytes`` for arbitrary-length raw byte data and ``string`` for arbitrary-length
|
||||||
string (UTF-8) data. If you can limit the length to a certain number of bytes,
|
string (UTF-8) data. If you can limit the length to a certain number of bytes,
|
||||||
always use one of the value types ``bytes1`` to ``bytes32`` because they are much cheaper.
|
always use one of the value types ``bytes1`` to ``bytes32`` because they are much cheaper.
|
||||||
|
@ -398,7 +398,7 @@ Members:
|
|||||||
* ``.length`` yields the fixed length of the byte array (read-only).
|
* ``.length`` yields the fixed length of the byte array (read-only).
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
The type ``byte[]`` is an array of bytes, but due to padding rules, it wastes
|
The type ``bytes1[]`` is an array of bytes, but due to padding rules, it wastes
|
||||||
31 bytes of space for each element (except in storage). It is better to use the ``bytes``
|
31 bytes of space for each element (except in storage). It is better to use the ``bytes``
|
||||||
type instead.
|
type instead.
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user