最近在做一个java socket程序,用到了,时间转为byte型,并且是转成4个字节的byte型请问该怎么转?
对方给了一个在C中转的例子,如下:时间在报文中是用一个int的数据类型来表示的。常用的几个结构和函数如下:
结构tm.
函数mktime.
以2007--4-17表示,基本步骤如下:
tm t; 
t.tm_year = 2007-1900;
t.tm_mon = 3;
t.tm_mday = 17;
t.tm_houre = 0;
t.tm_min = 0;
t.sec = 0;
time_t req_t;
req_t = mktime(&t);
然后将req_t拷贝到报文的相应字段中就行了。返回报文中的时间类型也是一样,从中将时间解析出来,就可以。相关的函数是:localtime()
现在我要用java转,请问如何转?

解决方案 »

  1.   

    我利用时间的毫秒数写了一个,不过由于只能使用 4 个 byte,所以精度只能达到秒。主要使用了 Calendar 类,通过这个类可以很方便地获得一些时间的值。byte 格式:byte[0] 是高 8 位的值,byte[3] 是低 8 位的值。import java.util.Calendar;
    import java.util.GregorianCalendar;public class Test {  public static void main(String[] args) throws InterruptedException {    
        Calendar calendar = new GregorianCalendar();    
        System.out.printf("%1$tF %<tT%n", calendar);    byte[] bytes = calendar2Bytes(calendar);        calendar = bytes2Calendar(bytes);
        System.out.printf("%1$tF %<tT%n", calendar);
      }
      
      public static byte[] calendar2Bytes(Calendar calendar) {
        int time = (int)(calendar.getTimeInMillis()/1000);
        byte[] bytes = new byte[4];
        for(int i = bytes.length - 1; i >= 0; i--) {
          bytes[i] = (byte)(time & 0xFF);
          time >>= 8;
        }
        return bytes;
      }
      
      public static Calendar bytes2Calendar(byte[] bytes) {
        int time = (bytes[0] << 24) & 0xFF000000 |
              (bytes[1] << 16) & 0xFF0000 |
              (bytes[2] << 8) & 0xFF00 |
              (bytes[3]) & 0xFF;
        Calendar calendar = new GregorianCalendar();
        calendar.setTimeInMillis(time * 1000L);
        return calendar;
      }
    }
      

  2.   

    请问这个:
        Calendar calendar = new GregorianCalendar();    
        System.out.printf("%1$tF %<tT%n", calendar);    byte[] bytes = calendar2Bytes(calendar);        calendar = bytes2Calendar(bytes);
        System.out.printf("%1$tF %<tT%n", calendar);
    这中的printf  这种写法java中有吗?
      

  3.   

    有啊,需要 JDK 1.5 或以上的版本才支持。
      

  4.   

    建议参考 ByteBuffer 的使用,时间用getTime()得到Long就可以了http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/java/nio/ByteBuffer.html