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等价。
答案 0 :(得分:3)
我认为你必须自己定义价值。一个字节有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))
答案 1 :(得分:1)
鉴于您的更新,有一个更好的答案:不要担心最大字节值是什么。根据{{3}},setStartRow
和setStopRow
方法就像Python的切片一样工作;也就是说,开头是包容性的,但止损是独占,这意味着您的endRowBytes
应该只是'rk2'
。
此外,文档提到您可以通过添加零字节来使停止行包含在内,因此另一种选择是'rk1' + chr(0)
(或'rk1\0'
或{{1} ,无论哪个最清楚你)。事实上,用于解释链接文档中的HBase扫描的示例完全说明了您的用例。