solidity 十六進制字符串轉十六進制bytes


pragma solidity ^0.4.16;


contract Metadata {

    // 十六進制字符串轉換成bytes
    function hexStr2bytes(string data)returns (bytes){

        uint _ascii_0 = 48;
        uint _ascii_A = 65;
        uint _ascii_a = 97;

        bytes memory a = bytes(data);
        uint[] memory b = new uint[](a.length);

        for (uint i = 0; i < a.length; i++) {
            uint _a = uint(a[i]);

            if (_a > 96) {
                b[i] = _a - 97 + 10;
            }
            else if (_a > 66) {
                b[i] = _a - 65 + 10;
            }
            else {
                b[i] = _a - 48;
            }
        }

        bytes memory c = new bytes(b.length / 2);
        for (uint _i = 0; _i < b.length; _i += 2) {
            c[_i / 2] = byte(b[_i] * 16 + b[_i + 1]);
        }

        return c;
    }
}

solidity 智能合約 從公鑰得到賬戶地址

function pk2account(address _address) public returns (address) {
        uint160 m = 0;
        uint160 tmp = 0;
        m = uint160(_address);
        tmp >>= 80;
        tmp <<= 80;
        m-=tmp;
        return address(m);
    }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM