1

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

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

4

3 回答 3

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();
    }
  }
}
于 2011-12-14T12:33:25.390 回答
2

您可以使用序列化,但要序列化一个对象,一个(那个)类必须是可序列化的。看看 - Java 对象序列化规范

于 2011-12-14T05:10:12.050 回答
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;
}
于 2011-12-14T10:49:14.887 回答