私はc#で書かれたtcpサーバーを持っています。私は2つのクライアント(C + +とjavascript)を書く必要があります。私は10進数(16byte - 128bit)をc#クライアントでデシリアライズできますが、他の言語を逆シリアル化することはできません。C#10進数からC++へのfloatとjavascript番号
小数点以下は、浮動小数点型または倍精度型を使用できます。
するとシリアル化の進:
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++でとJavaScriptから小数をデシリアライズするにはどうすればよいですか?
あなたはフロート 'へdecimal''から変換されない理由は、2進浮動小数点値としてそれをデシリアライズするために持っていれば'または' double'最初に?それは他の言語で逆シリアル化する方がはるかに簡単になるはずです... –
私はサーバー側を変更できません –
これは残念です。その場合は、正確なバイナリ形式の10進数のドキュメントを読んで、変換を自分で実装する必要があります。基本的には、整数を最初に取り出してから適切にスケールすることになります。 –