나는 C#으로 작성된 tcp 서버가 있습니다. 두 클라이언트 (C++ 및 javascript) 작성해야합니다. decimal (16byte - 128bit) 클라이언트에서 C#으로 역 직렬화 할 수 있지만 다른 언어는 deserialize 할 수 없습니다.십진수 ~ C++ float 및 자바 스크립트 번호
십진수가 너무 크지 않아 float 또는 double을 사용할 수 있습니다.
때 직렬화 진수 :
MemoryStream combinedMessage = new MemoryStream();
decimal d = 2135102.06m;
using (BinaryWriter writer = new BinaryWriter(combinedMessage, encoding))
{
writer.Write(d);
}
byte[] message = combinedMessage.ToArray();
직렬화와 같은 :
62 232 185 12 0 0 0 0 0 0 0 0 0 0 2 0
내가 바이트 [] C에서 ++와 자바 스크립트에서 소수점을 역 직렬화 할 수 있습니까?
당신은 플로트'에 decimal''에서 변환하지 왜 이진 부동 소수점 값으로 직렬화있어 경우 '또는'double' 먼저? 그게 다른 언어로 deserialize 훨씬 간단하게해야합니다 ... –
나는 서버 쪽을 바꿀 수 없다 –
그건 안 됐네. 이 경우 정확한 바이너리 형식에 대한 10 진수 설명서를 읽고 변환을 직접 구현해야합니다. 기본적으로 정수를 먼저 꺼낸 다음 적절하게 스케일을 조정해야합니다. –