一个具有一些数据的类对象,我已经将那个对象写入 java 卡。我有一个函数可以将十六进制数据转换为字节数组,然后使用 java 卡将该数据写入智能卡。当我将数据转换为十六进制格式时,我会加密该数据。所以我需要将类的对象转换为十六进制。请告诉我如何在java中将对象转换为十六进制格式。
我正在使用智能卡类型 = 使用 java 卡 2.2.2 的联系人卡和使用 apdu 的 jcop。
在这里,我向您发送将对象转换为字节数组的程序,反之亦然。
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();
}
}
}
您可以使用序列化,但要序列化一个对象,一个(那个)类必须是可序列化的。看看 - Java 对象序列化规范。
在这里您可以将类对象转换为字节数组
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;
}