如何在Java中将二维布尔数组转换为一维字节数组?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Java中将二维布尔数组转换为一维字节数组?相关的知识,希望对你有一定的参考价值。
我正在使用一维字节数组将斑点数据存储在sqlite数据库上。
[我正在寻找一种将二维布尔数组(boolean [] [])转换为一维字节数组(byte [])然后返回的快速,干净的方法。
我可以使用任何外部库和临时数组。
我唯一的想法是将2D数组编码为1D字符串数组,将外部数组索引与该值之间用破折号或其他唯一符号分隔,然后转换为字节(这样可以消除尺寸不兼容),但这似乎不是最佳选择。
是否有任何好的,干净的方法可以执行此操作?
提前感谢。
答案
似乎您的代码中需要某种编码/解码声明。所以,如果我是你,我会做这样的事情。
给出:
- N维数组[i] [j] [k] ... [n];
- 长度等于维数(N)的二进制数;
想象一下具有2D数组:
1 2
1 [true] [true]
2 [false] [false]
一个维度可以从左到右或从右到左编码。例如,我会从右到左。结果数组应类似于
[0b01] [0b01]
代码:
public class Coder
private static final byte FIRST_DIMENSION_MASK = 0b01;
private static final byte SECOND_DIMENSION_MASK = 0b10;
private byte[] code(boolean[][] arr)
int length = arr.length;
byte[] result = new byte[length];
for (int i = 0; i < length; i++)
result[i] = ((byte) ((arr[0][i] ? FIRST_DIMENSION_MASK : 0b00) | (arr[1][i] ? SECOND_DIMENSION_MASK : 0b00)));
return result;
private boolean[][] decode(byte[] arr)
int length = arr.length;
boolean[][] result = new boolean[length][length];
for (int i = 0; i < length; i++)
result[0][i] = (FIRST_DIMENSION_MASK & arr[i]) == FIRST_DIMENSION_MASK;
result[1][i] = (SECOND_DIMENSION_MASK & arr[i]) == SECOND_DIMENSION_MASK;
return result;
以上是关于如何在Java中将二维布尔数组转换为一维字节数组?的主要内容,如果未能解决你的问题,请参考以下文章
如何在java中将字节数组转换为hexString? [复制]