上述代码报错Exception in thread "main" java.lang.IllegalArgumentException: Wrong length: 2, expected 4
时间: 2023-10-29 22:13:52 浏览: 113
这个错误通常是由于`Bytes.toInt()`方法中传入的字节数组长度和实际的整数长度不匹配导致的。`Bytes.toInt()`方法的第三个参数是字节数组中整数的起始位置,第四个参数是整数的长度,如果字节数组的长度不足整数的长度,就会出现这个错误。你可以使用`Bytes.toShort()`、`Bytes.toInt()`、`Bytes.toLong()`等方法来解析字节数组,同时还可以使用`Bytes.toBytes()`方法将整数转换成字节数组,例如:
```
Result result = myuser.get(get);
List<Cell> cells = result.listCells();
for (Cell cell : cells) {
//获取列族的名称
String familyName = Bytes.toString(cell.getFamilyArray(), cell.getFamilyOffset(), cell.getFamilyLength());
//获取列的名称
String columnName = Bytes.toString(cell.getQualifierArray(), cell.getQualifierOffset(), cell.getQualifierLength());
byte[] valueBytes = cell.getValueArray();
if (valueBytes == null || valueBytes.length == 0) {
System.out.println("列族名:" + familyName + ",列名:" + columnName + ",列值为空!");
break;
}
if (familyName.equals("f1") && (columnName.equals("id") || columnName.equals("age"))) {
int intValue = Bytes.toInt(valueBytes);
System.out.println("列族名:" + familyName + ",列名:" + columnName + ",列值:" + intValue);
} else {
String value = Bytes.toString(valueBytes);
System.out.println("列族名:" + familyName + ",列名:" + columnName + ",列值:" + value);
}
}
```
在这个例子中,我们使用`Bytes.toInt()`方法来解析字节数组,同时使用`Bytes.toBytes()`方法将整数转换成字节数组。如果你仍然遇到问题,可以试试使用其他的解析方法。
阅读全文