如何在java中将类的对象转换为十六进制数组

时间:2011-12-14 04:58:16

标签: java hex byte smartcard javacard

具有一些数据的类的对象我不在将该对象写入java卡。 我有一个函数将十六进制数据转换为字节数组,然后使用java卡将该数据写入智能卡。 当我将数据转换为十六进制格式时,我会加密该数据。 所以我需要将类的对象转换为十六进制。 请告诉我如何在java中将对象转换为十六进制格式。

我正在使用智能卡类型=联系卡使用java卡2.2.2与jcop使用apdu。

3 个答案:

答案 0 :(得分:4)

这里我发送的程序将对象转换为字节数组,反之亦然。

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.Date;

public class Sandbox {
  public static void main(String[] args) {
    try {
      // convert object to bytes
      Date d1 = new Date();
      System.out.println(d1);
      ByteArrayOutputStream baos = new ByteArrayOutputStream();
      ObjectOutputStream oos = new ObjectOutputStream(baos);
      oos.writeObject(d1);
      byte[] buf = baos.toByteArray();

      // convert back from bytes to object
      ObjectInputStream ois =
        new ObjectInputStream(new ByteArrayInputStream(buf));
      Date d2 = (Date) ois.readObject();
      ois.close();

      System.out.println(d2);
    } catch (IOException ioe) {
      ioe.printStackTrace();
    } catch (ClassNotFoundException cnfe) {
      cnfe.printStackTrace();
    }
  }
}

答案 1 :(得分:2)

您可以使用serialization但是为了序列化对象,该类必须是可序列化的。看看 - Java Object Serialization Specification

答案 2 :(得分:2)

此处您可以将类对象转换为字节数组

    public byte[] toByteArray (Object obj)
    {
      byte[] bytes = null;
      ByteArrayOutputStream bos = new ByteArrayOutputStream();
      try {
        ObjectOutputStream oos = new ObjectOutputStream(bos); 
        oos.writeObject(obj);
        oos.flush(); 
        oos.close(); 
        bos.close();
        bytes = bos.toByteArray ();
      }
      catch (IOException ex) {
        //TODO: Handle the exception
  }
  return bytes;
}