String number = "000000";
 String id = "310141597210452232";
all = id + number;
byte[] messages = new byte[24];
messages = all.getBytes();
for (int i = 0; i < 24; i++) {
 System.out.print(messages[i]);打印結果是 514948495249535755504948525350505150484848484848我想要的結果是        messages[i]/3 的结果也就是 可以分成3个数组 arr1
                      arr2
                      arr3
打印的结果是 
5149484952495357
5550494852535050
5150484848484848

解决方案 »

  1.   

    你是要赋值给arr1,2,3 还是打印?
    for (int i = 0; i < 24; i++) {
    if (i%8==0) System.out.println();
    System.out.print(messages[i]);
    }
      

  2.   

    你这个问题本来就是错误的,你的理想是把all获得的字节数组放在message中,但是实际的情况是all.getBytes()会重新分配内存,原来message的内存被抛弃了,所以应该是
    for (int i = 0; i < messages.length; i++) {
    System.out.print(messages[i]);
    }
    分成三个的方法是
                    byte[][] strArray = new byte[3][messages.length / 3];
    if (messages.length % 3 == 0) {
    for (int i = 0; i < 3; i++) {
    strArray[i] = new String(messages, i * messages.length / 3, 8)
    .getBytes();
    }
    }
    for (int i = 0; i < 3; i++) {
    for (int j = 0; j < 8; j++) {
    System.out.print(strArray[i][j]);
    }
    System.out.println();
    }
      

  3.   


    大虾 我是要赋值 给 ARR1 ,2 , 3  
    谢谢  请教教我吧 
      

  4.   

    这个是不是要改成 if(i%8 == 7)
      

  5.   

    byte[] messages = new byte[24]; 
    messages = all.getBytes();
    byte[] arr1 = new byte[8];arr2 = new byte[8];arr3 = new byte[8];
    int temp = 0;
    while(temp < 8){
       arr1[temp] = messages[temp++];
    }
    while(temp < 16){
       arr2[temp] = messages[temp++];
    }
    while(temp < 24){
       arr3[temp] = messages[temp++];
    }
     以上是硬编码 不建议程序中这么使用
      

  6.   

    大虾们  赋值到  arr1 ,arr2  ,arr3  
    有点问题 。请帮忙   谢谢!~~
      

  7.   

    public static void main(String[] args) {
    String number = "000000";
    String id = "310141597210452232";
    String all = id + number;
    byte[] messages = all.getBytes();
    for (int i = 0; i < messages.length; i++) {
    System.out.println(messages[i]);
    }
    byte[][] strArray = new byte[3][messages.length / 3];
    if (messages.length % 3 == 0) {
    for (int i = 0; i < 3; i++) {
    strArray[i] = new String(messages, i * messages.length / 3, 8)
    .getBytes();
    }
    }
    for (int i = 0; i < 3; i++) {
    for (int j = 0; j < 8; j++) {
    System.out.print(strArray[i][j]);
    }
    System.out.println();
    }
    }
      

  8.   


    可以这样分成3个数组 arr1[8] = 5149484952495357
                      arr1[8] = 5550494852535050
                      arr3[8] = 5150484848484848主要是我要传送到网络去的!~!~多谢 
      

  9.   

    对 8 楼写错了 自己都忘了 呵呵 String number = "000000";
    String id = "310141597210452232";
    String all = id + number;
    byte[] messages = new byte[all.length()];  
    messages = all.getBytes();
    byte[] arr1 = new byte[messages.length / 3];
    byte[] arr2 = new byte[messages.length / 3];
    byte[] arr3 = new byte[messages.length / 3];
    int temp = 0;
    while(temp < messages.length / 3 ){
      arr1[temp] = messages[temp++];
    }
    while(temp < (messages.length / 3) * 2){
      arr2[temp - messages.length / 3] = messages[temp++];
    }
    while(temp < messages.length){
      arr3[temp - (messages.length / 3) * 2] = messages[temp++];
    }
    System.out.println(new String(arr1));
    System.out.println(new String(arr2));
    System.out.println(new String(arr3));这个可以了
      

  10.   

    楼上也是对的,事实上调用all.getBytes()之前所有对messages分配空间的代码都是没有意义的。
      

  11.   


    对不起  我要求的 打印结果是 以下的这些  
    而你的就是 前面的  String 数值!~·1
    有点问题!~~
      arr1[8] = 5149484952495357
      arr1[8] = 5550494852535050
      arr3[8] = 5150484848484848主要是我要传送到网络去的!~!~多谢 
      

  12.   

    我崩溃了,楼主怎么回事,他不是加new String(arr1)了嘛!
    public static void main(String[] args) {
    String number = "000000";
    String id = "310141597210452232";
    String all = id + number;
    byte[] messages = all.getBytes();
    for (int i = 0; i < messages.length; i++) {
    System.out.println(messages[i]);
    }
    byte[][] strArray = new byte[3][messages.length / 3];
    if (messages.length % 3 == 0) {
    for (int i = 0; i < 3; i++) {
    strArray[i] = new String(messages, i * messages.length / 3, 8)
    .getBytes();
    }
    }
    for (int i = 0; i < 3; i++) {
    for (int j = 0; j < 8; j++) {
    System.out.print(strArray[i][j]);
    }
    System.out.println();
    }
    }
    上面代码中strArray[1],strArray[2],strArray[3]是你想要的结果
      

  13.   

    错了,是strArray[0],strArray[1],strArray[2]是你想要的结果
      

  14.   


    System.out.println(strArray[0]);
    System.out.println(strArray[1]);
    System.out.println(strArray[2]);打印的结果是 
    [B@192d342
    [B@6b97fd
    [B@1c78e57
    这个是什么问题呢 望解答!!~
      

  15.   

    晕,你到底要打印还是要传输?那是一个3*8结构的二维数组,打印二维数组会吧?
    for (int i = 0; i < 3; i++) {
                for (int j = 0; j < 8; j++) {
                    System.out.print(strArray[i][j]);
                }
                System.out.println();
            }
      

  16.   

    数组都分配好了
    具体要打印成什么样子的在里边处理下就可以了
    LZ自己改下吧  忙ing。