[Ethereum] Bytes type

0xDave·2022년 12월 1일
0

Ethereum

목록 보기
68/112

솔리디티에 대해 더 잘 알고싶은 마음에 기본 개념들을 더 자세히 보려고 한다. 구글링을 하다가 좋은 미디엄을 발견해서 해당 글들을 읽고 정리할 생각이다. 미디엄에 Member-only로 되어 있어서 통번역을 하기엔 조심스럽다. 한 달에 $5만 내면 양질의 글들을 읽을 수 있으니 꼭 읽어보길 바란다!


1. Big-Endian vs. Little-Endian


Bytes가 저장되는 순서에 따라 두 가지 종류로 나눌 수 있다. 들어오는 순서대로 저장하는 Big-Endian과 마지막부터 저장하는 Little-Endian으로 구분된다. 이더리움은 타입에 따라 두 종류의 방법을 나눠서 사용한다.

Big-Endian : string, bytes
Little-Endian : 나머지 타입(numbers, addresses, etc…)


예를 들어, "abcd"를 저장하면 아래와 같이 저장되고

0x6162636400000000000000000000000000000000000000000000000000000000

0x61626364를 저장하면 아래처럼 저장된다.

0x0000000000000000000000000000000000000000000000000000000061626364

또한 byte 타입과 숫자는 다르게 저장된다.

// 0x00000000…01
Uint8 u8 = 1;
// 0x01000000….
byte b = 1;

2. Byte Arrays


byte 타입의 다른 모습들 때문에 이게 같은 타입인지 종종 헷갈릴 때가 있다. 정리하자면

  1. byte : bytes1과 같은 표현이다. 1개의 byte를 가진 array라고 할 수 있다.

  2. bytesN : N은 1에서 32 중에 한 숫자로, 숫자만큼 크기가 한정된 array를 말한다. 크기가 정해진 Bytes(Byte Array)는 컨트랙트 간 이동이 가능하다.

  3. bytes : 숫자 없이 s가 붙은 것으로 byte[]와 같은 말이다. 다른 타입들과 달리 크기가 정해져 있지 않은 dynamic array다. push, pop, length가 가능하다.


출처 및 참고자료


  1. Solidity Tutorial : all about Bytes
profile
Just BUIDL :)

0개의 댓글