FlatBufferBuilder.dataBuffer가 java.nio.ByteBuffer.wrap과 다른 버퍼를 반환하는 이유는 무엇입니까?

DP Greveling

Windows에서 C #으로 작성된 프로그램에서 플랫 버퍼를 사용하여 Java로 작성된 Android 응용 프로그램으로 네트워크를 통해 부동 소수점을 보내려고합니다.

안드로이드 애플리케이션의 수신 된 바이트에서 버퍼는 java.nio.ByteBuffer.wrap을 사용하여 빌드됩니다. 이 버퍼에서 Example 개체는 역 직렬화됩니다. 그러나 이로 인해 모든 부동 소수점이 0으로 설정됩니다.

아래 예에서이 동작이 표시됩니다.

"example2"가 0.0대신 값을 반환하는 이유는 무엇 20.0입니까?

이것은 내가 사용하는 스키마입니다.

// Example IDL file for our monster's schema.
namespace MyGame.Sample;
table Example {
  myFloat:float;
}
root_type Example;

이것은 동작을 보여주는 자바 코드입니다.

//The float
float myFloat = 20.0f;

FlatBufferBuilder builder = new FlatBufferBuilder(0);

//Build the example
Example.startExample(builder);
Example.addMyFloat(builder, myFloat);
int exampleInt = Example.endExample(builder);

builder.finish(exampleInt);

java.nio.ByteBuffer buf = builder.dataBuffer();

Example example = Example.getRootAsExample(buf);

System.out.println("1: Myfloat: " + example.myFloat());

byte[] bytesBuf = buf.array();
Example example2 = Example.getRootAsExample(java.nio.ByteBuffer.wrap(bytesBuf));

System.out.println("2: Myfloat: " + example2.myFloat());

산출:

System.out: 1: Myfloat: 20.0
System.out: 2: Myfloat: 0.0
감자

array ()는 0 이외의 오프셋에 FlatBuffer를 포함하는 원시 underlyimg 버퍼를 가져옵니다. 대신 FlatBufferBuilder에 버퍼를 얻을 수있는 메서드가 있습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관