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などの外部ライブラリを積極的に利用するようにしましょう。