java将字节[]转换为短[],使每个短元素包含13位数据
所以我正在研究一个解决方案,在这个解决方案中,我需要将任何给定的数据类型分解为13位编码,我能够处理除字符串之外的所有其他数据
所以,当我开始编写代码时,我会采取一些步骤
将字符串转换为字节数组
在短时间内收集第一个字节,将字节的位移位为13
将下一个字节的位移位为5,或将下一个字节的位移位为short,以获得第一个short
迭代变得越来越麻烦,我认为这种方法是完全错误的。我能找到一个可能的解决方案吗
你可以在下面搜索框中键入要查询的问题!
所以我正在研究一个解决方案,在这个解决方案中,我需要将任何给定的数据类型分解为13位编码,我能够处理除字符串之外的所有其他数据
所以,当我开始编写代码时,我会采取一些步骤
将字符串转换为字节数组
在短时间内收集第一个字节,将字节的位移位为13
将下一个字节的位移位为5,或将下一个字节的位移位为short,以获得第一个short
迭代变得越来越麻烦,我认为这种方法是完全错误的。我能找到一个可能的解决方案吗
# 1 楼答案
使用
BigInteger
。用byte[]
初始化它。当它不是零时,用and()
方法屏蔽掉13位,并转换成短通孔intValue()
。用shiftRight()
将其向右移位13位,然后重复# 2 楼答案
这段代码经过了少量测试。这是一个低级别的解决方案,但不会有太多开销(比如转移整个输入或垃圾生成或库膨胀)
# 3 楼答案
OpenLR有一个二进制库here.
它有一个
ByteArrayBitstreamInput
类,在其构造函数中接受一个byte[]
参数,然后可以用getInt()
获得任意数量的位,并将其转换为short