Solidity

如何在智能合約中將字元串轉換為四個數字?

  • January 17, 2022

我想要一個可以轉換成四個數字的字元串。

例如,它將字元串從 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
}

引用自:https://ethereum.stackexchange.com/questions/119059