java中如何将类的对象转换为十六进制数组
类中的一个对象有一些数据,我将该对象写入java卡。 我有一个函数,可以将十六进制数据转换成字节数组,然后使用java卡将数据写入智能卡。 当我将数据转换为十六进制格式时,我对数据进行加密。 所以我需要将类的对象转换为十六进制。 请告诉我如何在java中将对象转换为十六进制格式java中如何将类的对象转换为十六进制数组,java,hex,byte,smartcard,javacard,Java,Hex,Byte,Smartcard,Javacard,类中的一个对象有一些数据,我将该对象写入java卡。 我有一个函数,可以将十六进制数据转换成字节数组,然后使用java卡将数据写入智能卡。 当我将数据转换为十六进制格式时,我对数据进行加密。 所以我需要将类的对象转换为十六进制。 请告诉我如何在java中将对象转换为十六进制格式 我使用的是智能卡类型=使用java卡2.2.2的联系人卡和使用apdu的jcop。您可以使用,但要序列化对象,该类必须是可序列化的。查看-。您可以使用,但要序列化对象,该类必须是可序列化的。查看-。这里您可以将类对象转换
我使用的是智能卡类型=使用java卡2.2.2的联系人卡和使用apdu的jcop。您可以使用,但要序列化对象,该类必须是可序列化的。查看-。您可以使用,但要序列化对象,该类必须是可序列化的。查看-。这里您可以将类对象转换为字节数组,如下所示
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;
}
在这里,您可以将类对象转换为字节数组,如下所示
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;
}
在这里,我向您发送一个程序,该程序将对象转换为字节数组,反之亦然
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();
}
}
}
在这里,我向您发送一个程序,该程序将对象转换为字节数组,反之亦然
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();
}
}
}
有人能告诉我另一种解决方案吗?有人能告诉我另一种解决方案吗?它是否在你的应用程序中工作?或者你想要任何其他信息?它返回对象大小或位置。我想要对象和所有数据成员及其数据。可以用数据存储对象吗?@SachinDalvi:它返回字节数组。你怎么说它返回对象大小?它返回该对象的字节数组,但不包含数据。当我向其数据成员添加更多数据时,它返回字节数组中的相同数据。它是否在应用程序中工作?或者是否需要任何其他信息?它返回对象大小或位置。我希望对象包含所有数据成员及其数据。是否可以存储包含数据的对象?@SachinDalvi:它返回字节数组。你怎么说它返回对象大小?它返回该对象的字节数组,但不包含数据。当我向其数据成员添加更多数据时,它返回字节数组中的相同数据。序列化对象包含大量开销。使用JavaCards时,最好在将数据写入卡之前将数据减少到最小。在那里,我不会使用对象序列化。改为使用DataOutputStream,只使用您自己的格式写入数据。好的,对您来说很简单:对象序列化效率非常低。JavaCard和终端之间的数据传输很慢,通常限制在256字节的块内。因此,大量数据+缓慢传输=糟糕的设计IMHO。通过将所有方法字段写入DataOutputStream,您可以自己保存所有方法字段,这样会更好。序列化对象包含大量开销。使用JavaCards时,最好在将数据写入卡之前将数据减少到最小。在那里,我不会使用对象序列化。改为使用DataOutputStream,只使用您自己的格式写入数据。好的,对您来说很简单:对象序列化效率非常低。JavaCard和终端之间的数据传输很慢,通常限制在256字节的块内。因此,大量数据+缓慢传输=糟糕的设计IMHO。通过将所有方法字段写入DataOutputStream,您可以自己保存它们。