Skip to content

Commit

Permalink
Added hex en/decoding convenience methods
Browse files Browse the repository at this point in the history
  • Loading branch information
vbuterin committed Jun 26, 2017
1 parent 8f16b5e commit cea993a
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 2 deletions.
2 changes: 2 additions & 0 deletions rlp/__init__.py
@@ -1,7 +1,9 @@
from . import sedes
from .codec import (
encode,
hex_encode,
decode,
hex_decode,
infer_sedes,
descend,
append,
Expand Down
18 changes: 16 additions & 2 deletions rlp/codec.py
Expand Up @@ -2,8 +2,9 @@
import sys
from .exceptions import EncodingError, DecodingError

from .utils import (Atomic, str_to_bytes, is_integer, ascii_chr, safe_ord, big_endian_to_int,
int_to_big_endian)
from .utils import (Atomic, str_to_bytes, is_integer, ascii_chr,
safe_ord, big_endian_to_int, int_to_big_endian,
encode_hex, decode_hex)
from .sedes.binary import Binary as BinaryClass
from .sedes import big_endian_int, binary
from .sedes.lists import List, Serializable, is_sedes
Expand Down Expand Up @@ -62,6 +63,15 @@ def encode(obj, sedes=None, infer_serializer=True, cache=False):
return result


def hex_encode(obj, sedes=None, infer_serializer=True, cache=False,
prefixed=False):
return ('0x' * prefixed) + \
encode_hex(encode(obj, sedes, infer_serializer, cache))

def prefix_hex_encode(obj, sedes=None, infer_serializer=True, cache=False):
return '0x'+encode_hex(encode(obj, sedes, infer_serializer, cache))


class RLPData(str):

"wraper to mark already rlp serialized data"
Expand Down Expand Up @@ -221,6 +231,10 @@ def decode(rlp, sedes=None, strict=True, **kwargs):
else:
return item

def hex_decode(rlp, sedes=None, strict=True, **kwargs):
return decode(decode_hex(rlp[2:] if rlp[:2] == '0x' else rlp),
sedes, strict, **kwargs)

def descend(rlp, *path):
rlp = str_to_bytes(rlp)
for p in path:
Expand Down

0 comments on commit cea993a

Please sign in to comment.