我正在尝试将以下数据发送到将使用C ++的服务器:
static int user_id; // 4 Bytes
static byte state; // 1 Byte
static String cipher_data; // 128 Bytes
static String hash; // 128 Bytes
static final int PACKET_SIZE = 261;
public static byte [] packet = new byte [PACKET_SIZE];
我正在尝试创建一个字节数组,其中我将包含所有这些:
ByteArrayOutputStream baos = new ByteArrayOutputStream(PACKET_SIZE);
DataOutputStream dos = new DataOutputStream(baos);
dos.write(state);
dos.writeInt(user_id);
for (int i = 0; i < cipher_data.length(); i++) {
dos.write((byte) cipher_data.charAt(i));
}
for (int i = 0; i < cipher_data.length(); i++) {
dos.write((byte) hash.charAt(i));
}
packet = baos.toByteArray();
现在我拥有包含所有数据的字节数组,但我不确定我所做的是否正确,以及是否所有这些数据都可以从服务器端读取。如果你能给我一些建议,我真的很感激,
谢谢,
答案 0 :(得分:4)
您需要关心的第一件事是源机器和目标机器的Endian-ness。
Java是Big-Endian
C ++并不重要,您需要确定执行目标程序的机器(硬件/操作系统)。
之后,this SO线程将能够帮助您完成。
答案 1 :(得分:0)
第二个是字符串的编码。使用String.getBytes()
而不是仅将字符转换为字节。