Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function askForHelp (string id, uint256 times, bytes32 signature) {
- //do something
- }
- function askForHelp(bytes data) {
- string id = extractId(data);
- uint256 times = extractTimes(data);
- bytes32 signature = extractSig(data);
- //do something
- }
- //to implement
- function extractId (bytes data) ;
- //to implement
- function extractTimes (bytes data) ;
- //to implement
- function extractSig (bytes data) ;
- //signature is already hex
- //convert **id**: string has a fixed size = 12 characters => fix hex size
- let data = signature+web3.toHex(id)+web3.toHex(times);
- function extractId (bytes data) public pure returns(string) {
- bytes12 out;
- for (uint i = 0; i < 12; i++) {
- out |= bytes12(data[i] & 0xFF) >> (i * 8);
- }
- bytes memory returnValue = new bytes(12);
- for (uint j = 0; j < 12; j++) {
- returnValue[j] = out[j];
- }
- return string(returnValue);
- }
- function extractTimes (bytes data) public pure returns(uint256) {
- uint256 number;
- for(uint i= 0;i< 32;i++){
- number = number + uint(data[12 + i])*(2**(8*(32-(i+1))));
- }
- return number;
- }
- function extractSig (bytes data) public pure returns(bytes32) {
- bytes32 out;
- for (uint i = 0; i < 32; i++) {
- out |= bytes32(data[12 + 32 + i] & 0xFF) >> (i * 8);
- }
- return out;
- }
- function askForHelp(bytes data) public pure returns(string, uint256, bytes32) {
- string memory id = extractId(data);
- uint256 times = extractTimes(data);
- bytes32 signature = extractSig(data);
- return (id, times, signature);
- }
- 750000000000000000000000 (12 bytes for the ID)
- 000000000000000000000000000000000000000000000000000000000000000c (32 bytes uint252)
- 7700000000000000000000000000000000000000000000000000000000000000 (32 bytes)
- 0x750000000000000000000000000000000000000000000000000000000000000000000000000000000000000c7700000000000000000000000000000000000000000000000000000000000000
Add Comment
Please, Sign In to add comment