From 5c59d56335f3777b9e4ad595b66787ed563b26f1 Mon Sep 17 00:00:00 2001 From: Daniel Kirchner Date: Tue, 8 May 2018 14:26:01 +0200 Subject: Disallow conversions between bytesX and uintY of different size. --- docs/types.rst | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'docs') diff --git a/docs/types.rst b/docs/types.rst index 5c20dc67..63cdbe05 100644 --- a/docs/types.rst +++ b/docs/types.rst @@ -975,6 +975,15 @@ cut off:: uint32 a = 0x12345678; uint16 b = uint16(a); // b will be 0x5678 now +Since 0.5.0 explicit conversions between integers and fixed-size byte arrays +are only allowed, if both have the same size. To convert between integers and +fixed-size byte arrays of different size, they first have to be explicitly +converted to a matching size. This makes alignment and padding explicit:: + + uint16 x = 0xffff; + bytes32(uint256(x)); // pad on the left + bytes32(bytes2(x)); // pad on the right + .. index:: ! type;deduction, ! var .. _type-deduction: -- cgit v1.2.3 From f5a49f679a1ec2b8aef466f41d85bbfa99b9a74a Mon Sep 17 00:00:00 2001 From: Daniel Kirchner Date: Fri, 11 May 2018 14:06:31 +0200 Subject: Adjust tests. --- docs/contracts.rst | 2 +- docs/types.rst | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'docs') diff --git a/docs/contracts.rst b/docs/contracts.rst index b73fe2ca..00ef3fc6 100644 --- a/docs/contracts.rst +++ b/docs/contracts.rst @@ -802,7 +802,7 @@ as topics. The event call above can be performed in the same way as log3( bytes32(msg.value), bytes32(0x50cb9fe53daa9737b786ab3646f04d0150dc50ef4e75f59509d83667ad5adb20), - bytes32(msg.sender), + bytes32(uint256(msg.sender)), _id ); } diff --git a/docs/types.rst b/docs/types.rst index 63cdbe05..3f799c32 100644 --- a/docs/types.rst +++ b/docs/types.rst @@ -762,7 +762,7 @@ Members // Create a dynamic byte array: bytes memory b = new bytes(200); for (uint i = 0; i < b.length; i++) - b[i] = byte(i); + b[i] = byte(uint8(i)); return b; } } -- cgit v1.2.3