• Solidity中uint转string


      在《Solidity中uint转bytes》中,我们知道unit如何转换成bytes,其实把uint转换成string,就是在最后加上string(bytes变量)即可,如下所示:

    pragma solidity ^0.4.2;
    
    contract Test {
        
        function toBytesNickJohnson(uint256 x) constant returns (bytes b) {
            b = new bytes(32);
            assembly { mstore(add(b, 32), x) }
        }
    
        function getStr(uint playChoice) returns (string s) {
            bytes memory c = toBytesNickJohnson(playChoice);
            return string(c);
        }
        
        function toBytesEth(uint256 x) constant returns (bytes b) {
            b = new bytes(32);
            for (uint i = 0; i < 32; i++) {
                b[i] = byte(uint8(x / (2**(8*(31 - i))))); 
            }
        }
    
        function toBytesNicolasMassart(uint256 x) constant returns (bytes c) {
            bytes32 b = bytes32(x);
            c = new bytes(32);
            for (uint i=0; i < 32; i++) {
                c[i] = b[i];
            }
        }
    }

      但是呢,我在这里再附加一种Solidity中uint转string方法,如下所示:

    pragma solidity ^0.4.2;
    
    contract Test {
        
        function uint2str(uint i) internal returns (string c) {
            if (i == 0) return "0";
            uint j = i;
            uint length;
            while (j != 0){
                length++;
                j /= 10;
            }
            bytes memory bstr = new bytes(length);
            uint k = length - 1;
            while (i != 0){
                bstr[k--] = byte(48 + i % 10);
                i /= 10;
            }
            c = string(bstr);
        }
    }

  • 相关阅读:
    Centos下安装Redis
    Web框架的本质
    DOM Event
    HTML DOM
    JavaScript运算符
    JavaScript基础
    开发中常用的插件与框架
    selector模块
    IO模型(阻塞、非阻塞、多路复用与异步)
    事件驱动模型
  • 原文地址:https://www.cnblogs.com/flyingeagle/p/10153452.html
Copyright © 2020-2023  润新知