바이트 배열에 대한 모든 클래스의 필드 :이 제한이 도입 왜직렬화와 같은 내가 자바 클래스가
내가 바이트 배열에 모든 필드를 포장 할class Foo implements IBar
{
// Methods ..
// A bunch of fields of primitive types (int, String)
int f1;
int f2;
String f3;
// ...
}
(묻지 않는다 그러한 형식의 데이터를 보내는 C++ 측).
유일한 방법은 ByteBuffer
입니다. 하지만 내가 생각할 수있는 최악의 경우입니다. 코드는 다음과 같습니다.
ByteBuffer buf = ByteBuffer.allocate(4);
int offset = 0;
buf.putInt(f1);
System.arraycopy(buf.array(), 0, rawHeader, offset, 4);
offset += 4;
// A bunch of lines here (pack all other fields)
누구나보다 적합한 방법을 알고 있습니까? 감사.
ints/floats는 어떤 순서로 포장됩니까? 빅 엔디안 인 경우 DataOutputStream 응답이 작동합니다. 리틀 엔디안이라면 ByteBuffer가 구성 가능하기 때문에 가장 좋은 옵션 일 수 있습니다. –
왜 전체 결과에 대해 하나의 ByteBuffer를 할당하지 않고 2 차 배열로 복사하는 대신 계속 패킹을 유지해야합니까? – jtahlborn
@jtahlborn, 좋은 아이디어, 감사합니다. – maverik