我有一个哈希表,我想通过Datagram Socket发送它。 所以要做到这一点,我需要一个字节数组。 如何将哈希表转换为字节数组? 我忽略了填充哈希表 我试过这样做:
Hashtable<String, String> valueNick = new Hashtable<>();
nickStr = valueNick.toString();
byte[] bufferNick = nickStr.getBytes();
for (int i = 0; i < bufferNick.length; i++) {
System.out.print(bufferNick[i] + " ");
}
但没有印刷任何东西。 非常感谢您的帮助或建议。
答案 0 :(得分:2)
考虑为此目的检出ObjectOutputStream和ObjectInputStream
查看此tutorial以获取示例和说明
以下是序列化表的示例:
ByteArrayOutputStream byteStream = new ByteArrayOutputStream(5000);
ObjectOutputStream oos = new ObjectOutputStream(new BufferedOutputStream(byteStream));
// writes the object into a bytestream
oos.writeObject(valueNick);
oos.close();
byte[] sendBuf = byteStream.toByteArray();
// now send the sendBuf via a Datagram Socket
以下是阅读对象的示例:
ByteArrayInputStream byteStream = new ByteArrayInputStream(recvBuf);
ObjectInputStream ois = new ObjectInputStream(new BufferedInputStream(byteStream));
Hashtable<String, String> msg = (Hashtable<String, String>) ois.readObject();
ois.close();
答案 1 :(得分:0)
我修改了代码(在其中添加了值)
Hashtable<String, String> valueNick = new Hashtable<>();
valueNick.put("name", "Ankush");
valueNick.put("lastName", "Soni");
String nickStr = valueNick.toString();
byte[] bufferNick = nickStr.getBytes();
for (int i = 0; i < bufferNick.length; i++) {
System.out.print(bufferNick[i] + " ");
} }
打印输出:
123 108 97 115 116 78 97 109 101 61 83 111 110 105 44 32 110 97 109 101 61 65 110 107 117 115 104 125
编辑:使用空的Hashtable我也可以打印
的字节数据123 125