ソケットを使用してJavaとC#アプリケーションの間で通信するためにmiscutilライブラリを使用しています。次のコードの違いを理解しようとしています(これはGroovyですが、Javaの結果は同じです)。
import java.io.*
def baos = new ByteArrayOutputStream();
def stream = new DataOutputStream(baos);
stream.writeInt(5000)
baos.toByteArray().each { println it }
/* outputs - 0, 0, 19, -120 */
およびC#:
using (var ms = new MemoryStream())
using (EndianBinaryWriter writer = new EndianBinaryWriter(EndianBitConverter.Big, ms, Encoding.UTF8))
{
writer.Write(5000);
ms.Position = 0;
foreach (byte bb in ms.ToArray())
{
Console.WriteLine(bb);
}
}
/* outputs - 0, 0, 19, 136 */
ご覧のとおり、最後のバイトは-120
Javaバージョンと136
C#です。