아틴
Atin
아틴
전체 방문자
오늘
어제
  • 분류 전체보기 (460)
    • Devlopment (246)
      • 정리 글 (20)
      • MicroServices (0)
      • Reactive, Concurrenc.. (12)
      • Java (44)
      • Spring (20)
      • C,C++,Ruby,Python (52)
      • Mobile (39)
      • Web (35)
      • Tip & Info (14)
      • Unit Test (7)
    • Infra (44)
      • OS (21)
      • RDBMS (13)
      • NoSQL&Cache (5)
      • AWS (4)
    • Computer Science (11)
    • Etc (156)

블로그 메뉴

  • Home
  • Guestbook

공지사항

인기 글

태그

  • C
  • Linux
  • 던젼 앤 드래곤즈
  • javascript
  • 안드로이드
  • CSS
  • Android
  • mysql
  • 여행
  • 아이폰
  • 전라도
  • Dungeons & Dragons
  • 정읍
  • Ruby on Rails
  • jsp
  • 자바
  • Python
  • 해킨토시
  • TRPG
  • Java

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
아틴

Atin

Devlopment/Java

Java와 C#(또는 C, C++) 통신에서 엔디안과 인코딩 처리

2012. 2. 9. 13:54
반응형
C, C++, C#과 Java와 통신을 하려면 몇 가지 유의사항이 있다.

정수 타입에 대한 엔디안 처리와 인코딩을 유의해야 한다.
영문, 숫자 문자열를 주고 받을 때는 별 문제가 없지만 당연히 한글을 주고 받게 될 경우에는 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#에서 리틀 엔디안 -->> 빅 엔디안 처리

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 )


 
반응형

'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
    'Devlopment/Java' 카테고리의 다른 글
    • JAVA.LANG.CLASS를 통한 동적 객체 생성
    • Java SNMP Programming
    • JSON 에러 - Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/lang/exception/NestableRuntimeException
    • Java 로그 기록 라이브러리 - Log4j
    아틴
    아틴

    티스토리툴바