ByteOrder, LittleEndian, BigEndian with Honeywell Webs8000 - Engineer of NiagaraFramework

Tridium, NiagaraFramework, SCADA, HMI, PLC, Automation, SmartFAM etc.. About controls.
나이아가라 프레임워크 QnA : neverlikekami@gmail.com

2019년 12월 3일 화요일

ByteOrder, LittleEndian, BigEndian with Honeywell Webs8000

개요

Little-Endian, Big-Endian


CPU가 내부적으로 데이터를 처리하는 순서에따라서 바이트오더가 나뉘어진다. 
바이트오더는 Little-Endian과 Big-Endian으로 나뉘어진다.

Little-Endian
 - intel X86계열 CPU
 - AMD계열 CPU
 - EDC계열 CPU

Big-Endian
 - IBM
 - ARM
 - Motorola


Honeywell Webs8000 CPU


ARM@Cortex-a8 즉 Big-Endian을 기본으로 사용함을 알 수 있다. 
<Honeywell Webs8000 CPU Spec>

그렇다면 little-Endian을 사용하는 장비로부터 정상적인 데이터를 취득하기위해서는
바이트오더 변경이 필요하다. 


Change ByteOrder in JAVA


1
2
3
4
5
6
7
8
public static int getBigEndian(byte[] v)throws Exception{
int[] arr = new int[4];
for(int i=0;i<4;i++){
arr[i] = (int)(v[3-i] & 0xFF);
}
return ((arr[0<< 24+ (arr[1<< 16+ (arr[2<< 8+ (arr[3<< 0));
}
 
cs

댓글 없음:

댓글 쓰기

Post list