我有3x2矩阵,已将其转换为二进制格式。每个二进制表示应具有7位。我使用String.format方法获取二进制矩阵。

0000111 1101000
0000101 1100101
0001100 1110010

现在,我需要以3x2矩阵转换为3x14的方式将每个二进制值拆分为位。

`int[][] p = {{7,104},{5,101},{12,114}};
 int n;
 String[][] P = new String[3][2];
 for (int i =0; i<3;i++)
 {
 for(int j=0 ; j<2;j++)
 {
 P[i][j] =String.format("%7s", Integer.toBinaryString(p[i][j])).replace(' ',     '0');
 }
 }`


如何将二进制字符串拆分为单独的位,以获得3x14矩阵?
可以使用String.split()方法吗?我该如何对矩阵使用该方法?

最佳答案

static int[][] p = {{7,104},{5,101},{12,114}};
static int bit( int[][] p, int row, int col ){
    return (p[row][col/7] >> (7 - col%7 - 1)) & 1;
}


col / 7在0-6和7-14范围内产生0和1。 col%7得出值0,1,... 6。因此,移位移位6,5,... 0次。

public static void main(String[] args)throws Exception {
  for( int r = 0; r < 3; ++r ){
    for( int c = 0; c < 14; ++c ){
      System.out.print( " " + bit(p, r,c) );
    }
  System.out.println();
}


当然,您可以将其存储在3x14阵列中。

10-07 18:55
查看更多