2
는 빅 엔디안은 다른 컴퓨터에서 바이트 배열을 변환하기 위해, 우리는 사용할 수 있습니다 : 다른 시스템은 리틀 엔디안 경우 우리가 필요 왜hton/ntoh를 언제 사용하고 데이터를 언제 변환해야합니까?
이long long convert(unsigned char data[]) {
long long res;
res = 0;
for(int i=0;i < DATA_SIZE; ++i)
res = (res << 8) + data[i];
return res;
}
, 우리가
long long convert(unsigned char data[]) {
long long res;
res = 0;
for(int i=DATA_SIZE-1;i >=0 ; --i)
res = (res << 8) + data[i];
return res;
}
을 사용할 수 있습니다 위의 기능? 수신 할 때 발신자와 수신자에게 hton을 사용하면 안됩니까? 그것은 hton/nton이 convert()가 char 배열 인 동안 정수를 변환하기 때문입니까?
@ dvnrrs : 다른 방법으로 물어 보겠습니다. 컴퓨터에서 int를받을 때 (어떤 컴퓨터에서도 가능), convert()를 사용해야합니까? 귀하의 답변에서, 그것은 ntoh 것 같아요 변환 ntoh는 짧은 및 int, 긴 긴 바이트 배열을 처리 할 수 제외하고 같은 일을하고있다. 감사합니다 – user389955
@ user389955 그것은 네트워크 프로토콜에 따라 다릅니다! 보낸 사람이 빅 엔디안 * (= "네트워크 주문") 값을 제공하고 16 비트 또는 32 비트 정수라고 약속하면 htons/htonl을 안전하게 사용할 수 있습니다. 그렇지 않으면 게시 한 것과 같은 사용자 정의 코드가 필요합니다. – TypeIA