具有一些数据的类的对象我不在将该对象写入java卡。 我有一个函数将十六进制数据转换为字节数组,然后使用java卡将该数据写入智能卡。 当我将数据转换为十六进制格式时,我会加密该数据。 所以我需要将类的对象转换为十六进制。 请告诉我如何在java中将对象转换为十六进制格式。
我正在使用智能卡类型=联系卡使用java卡2.2.2与jcop使用apdu。
答案 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;
}