Ethereum 稳固性:如何将字节32表示为字符串

Ethereum 稳固性:如何将字节32表示为字符串,ethereum,solidity,Ethereum,Solidity,这在其他语言中可能很简单,但我不知道如何以稳定的形式实现。 我有一个像这样的字节320x05416460deb76d57af601be17e777b93592d8d4d4a4096c57876a91c84f4a712 我不想将字节转换为字符串,而是想将整个内容表示为字符串,如“0x05416460deb76d57af601be17e777b93592d8d4d4a4096c57876a91c84f4a712”。 怎样才能做到这一点呢 更新: 为什么我需要这样做:基本上我连接到一个oracle,它

这在其他语言中可能很简单,但我不知道如何以稳定的形式实现。
我有一个像这样的
字节32
0x05416460deb76d57af601be17e777b93592d8d4d4a4096c57876a91c84f4a712

我不想将字节转换为字符串,而是想将整个内容表示为字符串,如“0x05416460deb76d57af601be17e777b93592d8d4d4a4096c57876a91c84f4a712”。
怎样才能做到这一点呢

更新:
为什么我需要这样做:基本上我连接到一个oracle,它做一些链外工作,最后将一个文件上传到IPFS。我需要将内容标识符从oracle获取到我的合同中。oracle只能将
bytes32
作为响应发送,因此我将其转换为a,并将
digest
作为
bytes32
从oracle发送到contract。

到目前为止,很好,我可以在我的合同中重新创建multihash。问题是,在这之后,我创建了一个
ERC721
(NFT)令牌,并且我必须在元数据中存储对IPFS文件的一些引用,该元数据只能是
string
格式。这就是我目前的困境。

目前没有简单的方法,因为字符串也是字节数组。因此,您必须编写一个转换器,它将创建一个64长度的字节数组(稍后将转换为字符串),并用每个以某种方式转换为代表字节一半的ascii值的值填充该数组。示例:半字节
0
变为
0x30
,半字节
5
变为
0x35
,半字节
d
变为
0x64
,等等。然后您可以将此新字节数组转换为字符串。。。转换为字符串的原因是什么?也许一个事件日志就足够了(这样一个非连锁应用程序可以更容易地转换它)?谢谢你的回答!我更新了我的问题,包括为什么我必须这样做。这对于一个相对简单的任务来说似乎太复杂了,我只能想象这会消耗多少气体。。。所以我也愿意接受其他的解决方案。