ethereum / solidity-examples

Loose collection of Solidity example code

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Endianness section is wrong/misleading

roshanr95 opened this issue · comments

Bytes.md has a section which says "Ethereum uses the big endian format when working with strings/bytes, and little endian when working with other types (such as numbers and addresses)." and proceeds to give examples of the same, but it doesn't match conventional use of the term endianness.

  • A 32-byte number 0x61626364 in little endian format would be represented as 0x64636261000..., the example given is actually the big endian representation.
  • (Minor nitpick) Endianness is usually specified for multibyte values while UTF-8 strings are usually considered an array of single byte values. Don't think it is the right term to use for strings.

I'm not sure if there's an ideal term for what its trying to demonstrate (something around padding maybe?), perhaps someone more knowledgeable can chime in here.

Indeed, Ethereum is big-endian everywhere, but strings are left-aligned why numbers are right-aligned.

Ah yes, the concept of alignment would fit pretty well.

The ABI spec here seems to use versions of "padded on left/right" in most places and "left-align" in one of the examples so using either would be fine.

commented

Thanks! This is accurate and useful.