'C network library' มีฟังก์ชันเพื่อจัดการ endian'ness ได้แก่ htons (), htonl (), ntohs () และ ntohl () ... โดยที่ n คือ "เครือข่าย" (เช่น. big-endian) และ h คือ "host" (คือ endian'ness ของเครื่องที่รัน รหัส).
'ฟังก์ชัน' ที่ชัดเจนเหล่านี้ (โดยทั่วไป) ถูกกำหนดให้เป็นมาโคร [ดู <netinet / in.h>] ดังนั้นจึงไม่มีค่าใช้จ่ายรันไทม์สำหรับการใช้งาน
มาโครต่อไปนี้ใช้ 'ฟังก์ชัน' เหล่านี้เพื่อประเมิน endian'ness
#include <arpa/inet.h>
#define IS_BIG_ENDIAN (1 == htons(1))
#define IS_LITTLE_ENDIAN (!IS_BIG_ENDIAN)
นอกจากนี้:
ครั้งเดียวที่ฉันต้องรู้ถึงจุดสิ้นสุดของระบบคือเมื่อฉันเขียนตัวแปร [ไปยังไฟล์ / อื่น ๆ ] ซึ่งอาจถูกอ่านโดยระบบอื่นที่ไม่รู้จัก endian'ness (สำหรับความเข้ากันได้ข้ามแพลตฟอร์ม ) ... ในกรณีเช่นนี้คุณอาจต้องการใช้ฟังก์ชัน endian โดยตรง:
#include <arpa/inet.h>
#define JPEG_MAGIC (('J'<<24) | ('F'<<16) | ('I'<<8) | 'F')
// Result will be in 'host' byte-order
unsigned long jpeg_magic = JPEG_MAGIC;
// Result will be in 'network' byte-order (IE. Big-Endian/Human-Readable)
unsigned long jpeg_magic = htonl(JPEG_MAGIC);