如何用四个数字来决定一个唯一的数字ID?
How to use four numbers to decide an unique number ID?
我想在坐标中有一个矩形,用X,Y,W,H来表示。
可不可以用4个数字(X:102,Y:45,W:13,H:55)来决定一个唯一的ID,这个ID应该是uint256,然后就可以用一个要检索的唯一 ID(X:102,Y:45,W:13,H:55),并且(X,Y,W,H)最大数量将为 10000。
有什么公式或者算法可以参考吗?谢谢。
uint256
表示“256 位无符号整数 = 32 字节”
范围从 0 to 2^256 - 1
开始,足以存储 4 个最大大小为 10000 的有序数字。
即使你直接(字符串)连接(XYWH),你得到的最大数字是:10000100001000010000
,这是 20 位数字,因此可以很容易地存储在(小于)64-位。因此,有一种(最基本且效率最低的)方法,即使这也远低于您想要的。虽然很难取回值。
所以,你可以只给每个数字 2 个字节(16 位),然后连接起来。这将(总是)采用 64 位表示,并且很容易检索回来,因为您知道每个 (X,Y,W,H) 都以 16 位表示。
您可以通过为每个值分配 14 位(不是您需要的)并具有 56 位表示来进一步优化它。
一种简单有效的方法是将 16 位(C 短)表示的四个数字打包为一个 64 位整数(C 并集)。
我想在坐标中有一个矩形,用X,Y,W,H来表示。
可不可以用4个数字(X:102,Y:45,W:13,H:55)来决定一个唯一的ID,这个ID应该是uint256,然后就可以用一个要检索的唯一 ID(X:102,Y:45,W:13,H:55),并且(X,Y,W,H)最大数量将为 10000。
有什么公式或者算法可以参考吗?谢谢。
uint256
表示“256 位无符号整数 = 32 字节”
范围从 0 to 2^256 - 1
开始,足以存储 4 个最大大小为 10000 的有序数字。
即使你直接(字符串)连接(XYWH),你得到的最大数字是:10000100001000010000
,这是 20 位数字,因此可以很容易地存储在(小于)64-位。因此,有一种(最基本且效率最低的)方法,即使这也远低于您想要的。虽然很难取回值。
所以,你可以只给每个数字 2 个字节(16 位),然后连接起来。这将(总是)采用 64 位表示,并且很容易检索回来,因为您知道每个 (X,Y,W,H) 都以 16 位表示。
您可以通过为每个值分配 14 位(不是您需要的)并具有 56 位表示来进一步优化它。
一种简单有效的方法是将 16 位(C 短)表示的四个数字打包为一个 64 位整数(C 并集)。