Solidity Remix simple questions

Viewed 2774

Am new to Solidity here, this is the code I am testing and remix spits out

browser/Untitled.sol:1:1: : Source file does not specify required compiler version!Consider adding "pragma solidity ^0.4.12 contract C { ^ Spanning multiple lines.

Hopefully someone can give some guidance.

contract C {
    function bytes32ToString(bytes32 x) constant returns (string) {
        bytes memory bytesString = new bytes(32);
        uint charCount = 0;
        for (uint j = 0; j < 32; j++) {
            byte char = byte(bytes32(uint(x) * 2 ** (8 * j)));
            if (char != 0) {
                bytesString[charCount] = char;
                charCount++;
            }
        }
        bytes memory bytesStringTrimmed = new bytes(charCount);
        for (j = 0; j < charCount; j++) {
            bytesStringTrimmed[j] = bytesString[j];
        }
        return string(bytesStringTrimmed);
    }

    function bytes32ArrayToString(bytes32[] data) returns (string) {
        bytes memory bytesString = new bytes(data.length * 32);
        uint urlLength;
        for (uint i=0; i<data.length; i++) {
            for (uint j=0; j<32; j++) {
                byte char = byte(bytes32(uint(data[i]) * 2 ** (8 * j)));
                if (char != 0) {
                    bytesString[urlLength] = char;
                    urlLength += 1;
                }
            }
        }
        bytes memory bytesStringTrimmed = new bytes(urlLength);
        for (i=0; i<urlLength; i++) {
            bytesStringTrimmed[i] = bytesString[i];
        }
        return string(bytesStringTrimmed);
    }     }
4 Answers

See the responses given here and want to be clear with the compiler version:

In this case, you should use pragma solidity 0.4.11; if that is the compiler version that you have been testing and intend to deploy from. If you add ^ you don't lock the version and the risk of bugs will be considerably higher, especially if anyone other than the author will deploy the contract. If you lock the compiler version, you can ensure that the code will not be compiled with another version and the one that you intended.

Note that Solidity has a new code pattern here: pragma solidity >=0.4.24 <0.6.0; but you can still lock the version pragma solidity 0.5.2;.

Related