【Solidity】数値(uint)を文字列(string)に変換するには?

Solidityで数値(uint)を文字列(string)に変換する方法について解説します。

構文

素のSolidityでは文字列操作に難があるため、ライブラリ(OpenZeppelin)を使用します。

まずは、OpenZeppelinを使えるようにするため、以下のようにインポートします。

import "@openzeppelin/contracts/utils/Strings.sol";

OpenZeppelinのStrings.toString()メソッドで、数値(uint)を文字列(string)に変換します。

Strings.toString(数値[uint型])

サンプルコード

// SPDX-License-Identifier: GPL-3.0

pragma solidity >=0.7.0 <0.9.0;

import "@openzeppelin/contracts/utils/Strings.sol";

contract Test {

    function uintToString(uint num) public pure returns(string memory) {
        return Strings.toString(num); // 数値(uint)を文字列(string)に変換
    }

}

Solidityはブロックチェーン専用言語ということで、他のプログラミング言語とは異なり、文字列の操作が不得意です。そのため、ライブラリを自作するか(自分で専用の変換処理を書くか)、OpenZeppelinなどの外部ライブラリを積極的に利用するようにしましょう。

タイトルとURLをコピーしました