The following question has been asked on Telegram:
How to convert string to bytes
The following question has been asked on Telegram:
How to convert string to bytes
It depends on what you mean by that.
Packing
On Tezos, the way to convert data into a serial representation is called “pack”.
You can convert a string to it’s packed representation with sp.pack(my_string)
. The type of the result is sp.bytes
.
About serial representation, you can have a look at How to UNPACK into a specific type using tezos client? - Tezos Stack Exchange
Serialization is the process of converting a tree-like structure into a linear representation. In our case the tree-like structure is Micheline and the linear representation is a sequence of bytes (usually written in hexadecimal notation with the
0x
prefix). Deserialization is, as the name suggests, the opposite transformation from byte sequences to Micheline.
Bytes encoding
In pure Python (outside of a @sp.module
) you can transform a Python string to it’s utf-8 encoding by doing: "0x" + s.encode("utf-8").hex()
. This will provide a Python string in the form “0x…”. You can create a SmartPy bytes value from it with sp.bytes("0x" + s.encode("utf-8").hex())
.
This process is different from the previous one:
When using which
If you want to encode the metadata of a Smart contract or a token contract, the standard says you should use the second. You can use sp.scenario_utils.bytes_of_string(x)
as an helper.
Otherwise, you probably want to use pack and unpack as you can deal with it on-chain (and off-chain too).