소켓을 사용하여 Java와 C# 응용 프로그램 사이에서 통신하기 위해 miscutil 라이브러리를 사용하고 있습니다. 나는 다음과 같은 코드의 차이를 알아 내려고 노력하고 있어요 (이 멋져요하지만 자바 결과는 동일) :차이점은 C#과 miscutil을 사용하는 빅 엔디안 바이트
이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 */
당신이 볼 수 있듯이, 마지막 바이트는 Java 버전에서는 -120
이고 C#에서는 136
입니다.
내가 sbyte에 대한 BitConverter이 필요하거나 존의 클래스를 사용하는 것 같다 및 범위의 값을 가진 부호없는 정수를 나타냅니다 생성 된 byte [] 배열을 sbyte [] 배열로 변환합니다. –
네, 어떻게 든 C#에서'sbyte'를 사용하면'byte' int 자바와 같은 성능을 낼 것입니다. – jjnguy