问题场景
数据的属性比如time原本是long类型,存入hbase表时将long转成byte[],个别场景下读取就遇到一些变化。
long转成byte[]入库,又被当作String读取(客观原因必须步骤),转回byte[],再转long类型,数据发生变化。
图中可见,在转成String的前后byte[]已经不同了。
byte[]和String的转换问题
查资料得知,转换String类型有编码要求。
构造一个long转成的byte[]来进行String转换测试。Bytes.toString( byte[] )
和 new String( bytes[] )
可认为是相同的,且都是系统默认编码 UTF-8:
但该编码会改变原byte[]的值,长度和数值都会变。
解法一
CharEncoding.ISO_8859_1编码不会改变,可以得到原来的byte[],再转回long,就是原本的数了。但我的问题场景