function testEncoding_padding() public pure returns (bytes memory, bytes memory) {
uint8 a = 0x12;
uint16 b = 0x3456;
bytes memory standardABI = abi.encode(a, b);
bytes memory packed = abi.encodePacked(a, b);
return (standardABI, packed);
}
function testEncoding_alignment() public pure returns (bytes memory, bytes memory) {
uint8 a = 65; // 'A'의 ASCII 코드 값
address b = 0x1234567890123456789012345678901234567890;
bytes memory standardABI = abi.encode(a, b);
bytes memory packed = abi.encodePacked(a, b);
return (standardABI, packed);
}
abi.endoePacked()는 더 적은 공간을 사용하므로 가스 비용이 절약되며, 특정한 바이트 조작이 필요한 경우 유용하게 사용된다. 이 방식은 Ethereum의 표준 ABI 인코딩과 다르므로, 다른 컨트랙트와의 상호작용에서 주의가 필요하다.