반응형
C, C++, C#과 Java와 통신을 하려면 몇 가지 유의사항이 있다.
정수 타입에 대한 엔디안 처리와 인코딩을 유의해야 한다.
영문, 숫자 문자열를 주고 받을 때는 별 문제가 없지만 당연히 한글을 주고 받게 될 경우에는 utf-8이나 euc-kr로 변환을 해주어야 한다.
그리고 엔디안 처리를 유의해야 한다.
C, C++, C#에서는 리틀 엔디안을 쓰지만, 자바에서는 빅 엔디안을 사용한다.
C#쪽에서 빅 엔디안으로 바꿔주거나, 자바에서 리틀 엔디안으로 바꿔주면 되는데 나는 자바에서 바꾸는 쪽이 좋다고 본다.
Java에서 리틀 엔디안 빅 엔디안 처리
C#에서 리틀 엔디안 -->> 빅 엔디안 처리
int bodySize = 10;
byte[] head = BitConverter.GetBytes(bodySize);
if (BitConverter.IsLittleEndian) Array.Reverse(head);
Reference
[1] C# 기본 데이터형의 종류 ( http://social.msdn.microsoft.com/Forums/ko-KR/visualcsharpko/thread/3ac37ce3-535b-4aae-9acb-5bf0aafc9cc9 )
정수 타입에 대한 엔디안 처리와 인코딩을 유의해야 한다.
영문, 숫자 문자열를 주고 받을 때는 별 문제가 없지만 당연히 한글을 주고 받게 될 경우에는 utf-8이나 euc-kr로 변환을 해주어야 한다.
그리고 엔디안 처리를 유의해야 한다.
C, C++, C#에서는 리틀 엔디안을 쓰지만, 자바에서는 빅 엔디안을 사용한다.
C#쪽에서 빅 엔디안으로 바꿔주거나, 자바에서 리틀 엔디안으로 바꿔주면 되는데 나는 자바에서 바꾸는 쪽이 좋다고 본다.
Java에서 리틀 엔디안 빅 엔디안 처리
public class Endian{
public static byte[] getLittleEndian(int v){
byte[] buf = new byte[4];
buf[3] = (byte)((v >>> 24) & 0xFF);
buf[2] = (byte)((v >>> 16) & 0xFF);
buf[1] = (byte)((v >>> 8) & 0xFF);
buf[0] = (byte)((v >>> 0) & 0xFF);
return buf;
}
public static int getBigEndian(byte[] v) {
int[] array = new int[4];
for(int i=0; i<4; i++) array[i] = (int)(v[3-i] & 0xFF);
return ((array[0] << 24) + (array[1] << 16) + (array[2] << 8) + (array[3] << 0));
}
}
C#에서 리틀 엔디안 -->> 빅 엔디안 처리
byte[] head = BitConverter.GetBytes(bodySize);
if (BitConverter.IsLittleEndian) Array.Reverse(head);
Reference
[1] C# 기본 데이터형의 종류 ( http://social.msdn.microsoft.com/Forums/ko-KR/visualcsharpko/thread/3ac37ce3-535b-4aae-9acb-5bf0aafc9cc9 )
반응형
'Devlopment > Java' 카테고리의 다른 글
Java간의 통신 (1) | 2012.05.10 |
---|---|
Netty서버에서 1024이상 받지 못하는 문제의 해결법 (0) | 2012.04.15 |
XmlGenerator - Java에서 XML 생성 (3) | 2012.03.09 |
JAVA.LANG.CLASS를 통한 동적 객체 생성 (0) | 2012.02.28 |
Java SNMP Programming (0) | 2012.02.13 |
JSON 에러 - Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/lang/exception/NestableRuntimeException (0) | 2012.02.06 |
Java 로그 기록 라이브러리 - Log4j (0) | 2011.12.06 |
String vs StringBuffer (0) | 2011.07.01 |
Aptana 플러그인 (0) | 2011.06.13 |
싱글톤 패턴(Singleton Pattern) (0) | 2011.06.10 |