如何反转字符串的可靠性?

时间:2018-02-03 18:01:35

标签: solidity

大家好,这是我的代码,我想要反复一个字符串:

function reverseValue(string _base) internal returns(string){
        bytes memory _baseBytes = bytes(_base);

        string memory _tempValue = new string(_baseBytes.length);
        bytes memory _newValue = bytes(_tempValue);

        for(uint i=_baseBytes.length;i<=0;i--){
            _newValue[_baseBytes.length - i] = _baseBytes[i];
        }

        return string(_newValue);
    }

但唯一的结果是以下代码: 0:string : \u0000\u0000\u0000\u0000\u0000\u0000

我认为我的代码写得正确,但我无法找到问题... tnx可以帮助我:)

1 个答案:

答案 0 :(得分:1)

我找到了这个答案,这是正确的代码:

function reverseValue(string _base) internal returns(string){
        bytes memory _baseBytes = bytes(_base);
        assert(_baseBytes.length > 0);

        string memory _tempValue = new string(_baseBytes.length);
        bytes memory _newValue = bytes(_tempValue);


        for(uint i=0;i<_baseBytes.length;i++){
            _newValue[ _baseBytes.length - i - 1] = _baseBytes[i];
        }

        return string(_newValue);
    }

现在这个特定代码的结果是:

_base : "shahab" -> result : 0 : string : "bahahas"