如何使用64位无符号整数作为App Engine数据存储区中的实体键并保留排序顺序?

我有无符号的64位整数,我想用作App Engine数据存储区密钥。不幸的是,NDB数据存储区API似乎仅允许最大为的带符号的64位整数pow(2, 63)

我可以两个互补的整数,但我依靠在数据存储进行查询的排序顺序,所以我想0xffffffffffffffff以后到来0x0之前不是升序排列。我相信,如果我对我的64位无符号整数进行二进制补码(0xffffffffffffffff例如-1由数据存储区索引0x0解释并0例如被解释),就会发生这种情况

我可以将每个无符号的64位密钥从整数更改为字符串,甚至是十六进制字符串,但是与将密钥保留为64位整数相比,这将在数据存储区中占用更多的空间。

多亏了Tim HoffmanGuido van Rossum的回答,您才能将64位无符号整数用作App Engine数据存储区中的实体键,并不能保留排序顺序。

如果您不关心排序顺序,则可以对无符号的64位整数进行二进制补码,然后使用它。

最后,我将无符号的64位整数更改为固定宽度的十六进制字符串,并将其保存为密钥,因为这似乎最方便,但会占用一些空间。

我使用的功能如下所示:

def to_hex_string(unsigned_64bit_int):
    return '{:016x}'.format(my_unsigned_64bit_int)

def to_unsigned_64bit_int(hex_string):
    return int(hex_string, 16)

如果空间很关键,Guido van Rossum建议使用保留排序顺序的base-64编码。我不确定Python base64模块编码器是否保留排序顺序。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Google App Engine转到数据存储区,使用键检查实体是否存在

来自分类Dev

如何从Google App Engine(Java)数据存储区中的子实体查询父实体?

来自分类Dev

App Engine数据存储区查询是否具有默认的排序顺序?

来自分类Dev

如何在python中获取16位无符号整数

来自分类Dev

如何使用Java从Google App Engine数据存储区中的实体提取属性

来自分类Dev

如何从Java中具有AppEngine数据存储区的相同键的实体中删除实体

来自分类Dev

如何从App-Engine数据存储区实体类型中获取最新的25个条目

来自分类Dev

Google App Engine数据存储区如何获取Key <?>的实体

来自分类Dev

以无符号16位整数存储RGB

来自分类Dev

以无符号16位整数存储RGB

来自分类Dev

如何将实体的实体键分配为数据存储区(Node JS)中不同实体的属性?

来自分类Dev

Clojure中的无符号16位整数

来自分类Dev

App Engine数据存储区:如何批量删除本地主机上的数据存储区实体?

来自分类Dev

覆盖Google App Engine- Java中的数据存储区实体

来自分类Dev

列出Google App Engine数据存储区中的所有实体时出现AttributeError

来自分类Dev

Google App Engine(Python)-数据存储区正在复制实体

来自分类Dev

查询所有实体的Google App Engine数据存储区

来自分类Dev

Google App Engine数据存储区按属性删除实体

来自分类Dev

计算无符号64位整数中的零半字节数

来自分类Dev

使用go lang中的bitshift从32位无符号整数中获取位

来自分类Dev

App Engine数据存储区的复合键性能

来自分类Dev

如何直接在numpy数据类型中为16位无符号整数指定尾数?

来自分类Dev

如何直接在numpy数据类型中为16位无符号整数指定尾数?

来自分类Dev

使用递归如何计算无符号整数中的位数?

来自分类Dev

获取无符号整数中位的整数值

来自分类Dev

如何集体检查是否在无符号整数中设置了位?

来自分类Dev

如何在C ++中采用输入128位无符号整数

来自分类Dev

如何在C ++中采用输入128位无符号整数

来自分类Dev

如何在 JavaScript 中创建大小为 128 位的无符号整数数组?

Related 相关文章

  1. 1

    Google App Engine转到数据存储区,使用键检查实体是否存在

  2. 2

    如何从Google App Engine(Java)数据存储区中的子实体查询父实体?

  3. 3

    App Engine数据存储区查询是否具有默认的排序顺序?

  4. 4

    如何在python中获取16位无符号整数

  5. 5

    如何使用Java从Google App Engine数据存储区中的实体提取属性

  6. 6

    如何从Java中具有AppEngine数据存储区的相同键的实体中删除实体

  7. 7

    如何从App-Engine数据存储区实体类型中获取最新的25个条目

  8. 8

    Google App Engine数据存储区如何获取Key <?>的实体

  9. 9

    以无符号16位整数存储RGB

  10. 10

    以无符号16位整数存储RGB

  11. 11

    如何将实体的实体键分配为数据存储区(Node JS)中不同实体的属性?

  12. 12

    Clojure中的无符号16位整数

  13. 13

    App Engine数据存储区:如何批量删除本地主机上的数据存储区实体?

  14. 14

    覆盖Google App Engine- Java中的数据存储区实体

  15. 15

    列出Google App Engine数据存储区中的所有实体时出现AttributeError

  16. 16

    Google App Engine(Python)-数据存储区正在复制实体

  17. 17

    查询所有实体的Google App Engine数据存储区

  18. 18

    Google App Engine数据存储区按属性删除实体

  19. 19

    计算无符号64位整数中的零半字节数

  20. 20

    使用go lang中的bitshift从32位无符号整数中获取位

  21. 21

    App Engine数据存储区的复合键性能

  22. 22

    如何直接在numpy数据类型中为16位无符号整数指定尾数?

  23. 23

    如何直接在numpy数据类型中为16位无符号整数指定尾数?

  24. 24

    使用递归如何计算无符号整数中的位数?

  25. 25

    获取无符号整数中位的整数值

  26. 26

    如何集体检查是否在无符号整数中设置了位?

  27. 27

    如何在C ++中采用输入128位无符号整数

  28. 28

    如何在C ++中采用输入128位无符号整数

  29. 29

    如何在 JavaScript 中创建大小为 128 位的无符号整数数组?

热门标签

归档