Solidity
如何在智能合約中將字元串轉換為四個數字?
我想要一個可以轉換成四個數字的字元串。
例如,它將字元串從 E17B1237 轉換為 (225, 123, 18, 55),這是從十六進制轉換為十進制。
E1 => 225, 7B => 123, 12 => 18, 37 => 55,
我該怎麼做?十六進制轉十進制只是一個例子,有什麼辦法嗎?
如何區分字元串E17B1237,拆分為(225、123、18、55),然後進行轉換。謝謝。
因為我想在座標中有一個矩形,並且使用x,y,w,h來創建唯一ID,那麼我也可以使用唯一ID來檢索x,y,w,h。
如何創建一個唯一的 ID(x,y,w,h) 可以清楚地分成四個數字,然後進行轉換。
這種轉換在gas方面相當昂貴。我建議使用替代方法來實現相同的邏輯。
您的唯一標識符可能是
keccak256()
座標的。範例實現可能如下所示。mapping (bytes32 => uint8[]) hashToCoordinates; function getCoordinates(bytes32 hash) public view returns(uint8[] memory){ return hashToCoordinates[hash] } function addCoordinates(uint8[] crds) public returns(bytes32){ bytes32 hash = keccak256(abi.encodePacked(crds)); hashToCoordinates[hash] = crds; return hash }