ByteBuffer到字节数组

时间:2015-03-09 10:50:49

标签: java bytearray bytebuffer

我有一个ByteBuffer,我需要将其内容添加到POST请求中,以便远程显示代表的图像;但我无法弄明白该怎么做。

这样做不起作用:

byteBuffer.array()

我曾尝试将其转换为字节数组,但由于图片显示不正确而无效:

byte[] byteArray = new byte[byteBuffer.remaining()];
frame.duplicate().get(byteArray);
HttpResponse response = null;
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost(URL);
post.setEntity(new ByteArrayEntity(byteArray));

此外,我考虑将其转换为图像并获取其字节数组,但我不知道该怎么做以及它是否有用......

任何帮助都将受到赞赏。

2 个答案:

答案 0 :(得分:1)

使用allocate创建的ByteBuffer(不一定是allocateDirect)应该有一个支持数组,请与hasArray() / isDirect()一起检查。

byteBuffer.flip();  // Sets limit to current write position.
int n = byteBuffer.limit();
byteBuffer.rewind(); // Already done by flip I think.
byte[] data = new byte[n];
byteBuffer.get(data);

答案 1 :(得分:0)

private static byte[] getByteArrayFromByteBuffer(ByteBuffer byteBuffer) {
    byte[] bytesArray = new byte[byteBuffer.remaining()];
    byteBuffer.get(bytesArray, 0, bytesArray.length);
    return bytesArray;
}