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);
}
05-11 19:57
查看更多