【问题标题】:python - what is max byte equivalent to java Byte.MAX_VALUEpython - 什么是最大字节等效于 java Byte.MAX_VALUE
【发布时间】:2013-01-15 14:15:37
【问题描述】:

python 是否等同于 java 的 Byte.MAX_VALUE 表示最大字节?我查看了 python sys 模块,我只找到了sys.maxint。有sys.maxbyte之类的吗?

更新:

就我而言,我正在进行 Hbase Rowkey 扫描,我的 rowkey 看起来像 rk1_rk2。为了在不知道确切 rk2 的情况下扫描 rk1 的所有结果,我的 java 代码如下所示:

byte[] startRowBytes = "rk1".getBytes(); 
byte[] endRowBytes = ("rk1" + (char) Byte.MAX_VALUE).getBytes(); 

HbaseScanQuery query = new   HbaseScanQuery(tableName, colFamily);
query.setStartRow(startRowBytes).setStopRow(endRowBytes);

我只是想弄清楚 Byte.MAX_VALUE 部分的 python 等价性。

【问题讨论】:

  • 字节总是最大十六进制FF;十进制 255。你需要这个做什么?这不是一个会因平台而异的值,因此不值得添加到sys 中。
  • 看起来它只是一个常量(值=127),所以不需要像sys.maxbyte这样的东西。 docs.oracle.com/javase/1.5.0/docs/api/…
  • @AshwiniChaudhary:Java 字节是有符号整数,这与 Python bytesbytesarray 不同。

标签: java python hbase


【解决方案1】:

我认为您必须自己定义价值。一个字节有 2^8 = 256 个唯一状态,因此它可以表示的最大整数是 255。然而,java 的字节类型是有符号字节,所以一半状态保留用于正数(和 0),另一半用于对于底片。所以java的Byte.MAX_VALUE的等价物是127,java的Byte.MIN_VALUE的等价物是-128

由于 python 字节是无符号的,因此 java 的 Byte.MIN_VALUE 的等价物将是 128,这是 2 的补码表示法(表示有符号整数的事实标准)中 -128 的表示,这要感谢 Ignacio Vazquez-Abrams 指出这一点。

我有段时间没有接触过python,但我相信你想要的是("rk1"+chr(127))

【讨论】:

  • 对于创建bytes 而言,负值除外。
  • 好的,但是无论是否签名,底层字节中的表示形式都可以相同,因此请编辑我的答案以反映这一点
  • @AaronWaibel 能否给出一个代码示例以在 python 中进行翻译:("rk1" + (char) Byte.MAX_VALUE).getBytes(),谢谢
【解决方案2】:

鉴于您的更新,有一个更好的答案:不要担心最大字节值是多少。根据HBase documentationsetStartRowsetStopRow 方法就像Python 的切片一样工作;即,开始是包容性的,但停止是排他性的,这意味着您的endRowBytes 应该只是'rk2'

此外,文档提到您可以通过添加 zero 字节使停止行包含在内,因此另一种选择是 'rk1' + chr(0)(或 'rk1\0''rk1\x00',以最清楚者为准你)。事实上,链接文档中用于解释 HBase 扫描的示例正是您的用例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-01
    • 1970-01-01
    • 2019-04-16
    • 1970-01-01
    • 1970-01-01
    • 2019-01-31
    • 1970-01-01
    相关资源
    最近更新 更多