Universidad de Magallanes

Research


Direction of Research


facebook twitter youtube
02 de August del 2019

htonl 예제

즉, 인텔에서는 이러한 함수가 모든 바이트를 교환하고 PowerPC에서는 바이트가 이미 네트워크 바이트 순서에 있기 때문에 아무 것도 하지 않습니다. 그러나 누군가가 인텔 컴퓨터에서 빌드하고 제대로 작동하도록 할 수 있으므로 항상 코드에서 사용해야 합니다. . 이러한 함수는 네트워크 바이트 순서와 호스트 바이트 순서 간에 16비트 및 32비트 수량을 변환해야 합니다. limits.h는 일부 플랫폼 별 정의가 필요한 헤더입니다. 이 헤더는 다양한 형식에 대해 많은 최소/max 값을 정의합니다. 이제 byteswap 함수가 있으므로 공통 byteswap API를 구현할 수 있습니다. 우리는 우리가 실제로 엔디안 스왑을 수행하고 있는지 여부를 결정하기 위해 아키텍처의 endianness를 사용합니다. . . htonl() 및 htons() 함수는 호스트에서 네트워크 바이트 순서로 변환된 인수 값을 반환합니다. i386에서 호스트 바이트 순서는 가장 중요 바이트가 먼저 가장 중요하지만 인터넷에서 사용되는 네트워크 바이트 순서는 가장 중요한 바이트입니다.

다음으로 바이트 스왑 기능을 구현해야 합니다. 우리는 표준 매크로 양식을 사용합니다 : 이 문제를 해결할 수있는 방법은 모든 사람들이 자신의 차이를 제쳐두고 모토로라와 IBM이 옳았다는 것에 동의하는 것이며 인텔은 이상한 방식으로 수행했기 때문에 우리 모두는 바이트 주문을 “빅 엔디안”으로 변환한 후 ou를 전송합니다. t. 인텔은 “리틀 엔디안” 컴퓨터이기 때문에 선호하는 바이트 주문을 “네트워크 바이트 순서”라고 부르는 것이 훨씬 정치적으로 정확합니다. 따라서 이러한 함수는 네이티브 바이트 순서에서 네트워크 바이트 순서로 변환하고 다시 돌아갑니다. . . . 일부 시스템에는 대신 를 포함해야 합니다. 각 아키텍처에 대한 endianness를 설정하기 위해 아키텍처의 _endian.h에서 __BYTE_ORDER를 정의합니다.

아키텍처별 _limits.h 파일을 포함하고 있습니다. 어쨌든 이러한 함수가 작동하는 방식은 먼저 호스트(컴퓨터의) 바이트 순서또는 네트워크 바이트 순서로 변환할지 여부를 결정하는 것입니다. “host”인 경우 호출할 함수의 첫 글자중 “h”입니다. 그렇지 않으면 “네트워크”에 대한 “n”입니다. 함수 이름의 중간은 한 “에서”로 변환하기 때문에 항상 “to”이고 끝에서 두 번째 문자는 변환하는 내용을 보여 주므로 항상 “받는 사람”입니다. 마지막 문자는 데이터의 크기, 짧은 경우 “s”, 길게는 “l”입니다. 따라서 C++에는 고유한 bool 형식이 있으므로 C에 대한 bool 형식만 정의하면 됩니다. C 전용으로 헤더 내용을 이 매크로로 래핑하는 것이 가장 쉬운 방법입니다.

이러한 값은 아키텍처에 따라 다릅니다: 32비트 시스템에는 32비트 긴 유형이 있고 64비트 시스템에는 64비트 긴 형식이 있습니다. 관련된 형식은 32비트(4바이트, 아마도 int) 및 16비트(2바이트, 매우 짧은) 숫자입니다.

inicio atrás arriba

HIGHLIGHTS

  • LINKS


  • Dirección de Investigación

    Investigación • Avenida Bulnes 01890 • Punta Arenas • Chile
    Teléfono: +56 61 2 209 397 • Email: dir.investigacion@umag.cl