我有一个功能
public static Object receviceSigAndData (Socket s) {
byte[] data = null;
try {
DataInputStream din2 = new DataInputStream(s.getInputStream());
int sig_len = 0;
sig_len = din2.readInt();
byte[] sig = new byte[sig_len];
din2.readFully(sig);
int data_len = 0;
data_len = din2.readInt();
data = new byte[data_len];
dsa.update(data);
} catch (IOException ioe) {
ioe.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return (Object)data;
}
Run Code Online (Sandbox Code Playgroud)
函数返回一个对象,如果对象是字节数组,我该如何将对象转换为byte[]?
byte[] b = (?)receviceSigAndData (socket);
Run Code Online (Sandbox Code Playgroud)
谢谢
通过查看您的代码:
Object:因为它是一个upcast,它是隐式完成的(一个byte[]静态也是一个Object)Object为a byte[]:byte[] a = (byte[])objObject完全没有意义的方法,签名意味着有用和信息丰富.返回一个Object是你可以做的信息最少的事情.如果您的方法是返回a,byte[]那么它的返回值应该是byte[]类型下面是两个辅助方法,可以将字节数组序列化和反序列化为对象.
public static Object deserializeBytes(byte[] bytes) throws IOException, ClassNotFoundException
{
ByteArrayInputStream bytesIn = new ByteArrayInputStream(bytes);
ObjectInputStream ois = new ObjectInputStream(bytesIn);
Object obj = ois.readObject();
ois.close();
return obj;
}
public static byte[] serializeObject(Object obj) throws IOException
{
ByteArrayOutputStream bytesOut = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bytesOut);
oos.writeObject(obj);
oos.flush();
byte[] bytes = bytesOut.toByteArray();
bytesOut.close();
oos.close();
return bytes;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16947 次 |
| 最近记录: |