Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java中如何将类的对象转换为十六进制数组_Java_Hex_Byte_Smartcard_Javacard - Fatal编程技术网

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

java中如何将类的对象转换为十六进制数组,java,hex,byte,smartcard,javacard,Java,Hex,Byte,Smartcard,Javacard,类中的一个对象有一些数据,我将该对象写入java卡。 我有一个函数,可以将十六进制数据转换成字节数组,然后使用java卡将数据写入智能卡。 当我将数据转换为十六进制格式时,我对数据进行加密。 所以我需要将类的对象转换为十六进制。 请告诉我如何在java中将对象转换为十六进制格式 我使用的是智能卡类型=使用java卡2.2.2的联系人卡和使用apdu的jcop。您可以使用,但要序列化对象,该类必须是可序列化的。查看-。您可以使用,但要序列化对象,该类必须是可序列化的。查看-。这里您可以将类对象转换

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


我使用的是智能卡类型=使用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,您可以自己保存它们。