将Uint32 int编码为Java字节数组

时间:2014-07-09 05:22:14

标签: java arrays bit-manipulation

我正在使用第三方ssh库,我需要将一些选项指定为字节数组。即终端模式(http://www.ietf.org/rfc/rfc4254.txt)。

我的问题是我需要创建一个byte数组,该数组是uint数组{128, 36000, 129, 36000}的'等效',我不太清楚如何实现这一目标。相当于我的意思 - 我不在乎它在java中代表的是什么数字,我确实关心在套接字上发送正确的字节。

任何提示?提前谢谢。

1 个答案:

答案 0 :(得分:3)

如果我理解了您的问题,那么我相信您可以使用ByteArrayOutputStream包裹的DataOutputStream来做到这一点,

ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(baos);
int[] ints = new int[] { 128, 36000, 129, 36000 };
try {
  for (int i = 0; i < ints.length; i += 2) {
    dos.writeByte(ints[i]);
    dos.writeInt(ints[1 + i]);
  }
  dos.close();
} catch (IOException e) {
  e.printStackTrace();
}
byte[] bytes = baos.toByteArray();

或者,直接使用客户端OutputStream