Sponsored Content
Full Discussion: htons and ntohs
Top Forums UNIX for Dummies Questions & Answers htons and ntohs Post 302229607 by dbshuis on Wednesday 27th of August 2008 09:44:50 AM
Old 08-27-2008
htons and ntohs

Hi All,

I am running a short program on the effects of host-to-network and network-to-host functions. The following is part of my code:

int a = 384;
printf("Used htons with a, getting: %x Hex and %d Numeral\n", htons(a), htons(a));
printf("Used ntohs with a, getting: %x Hex and %d Numeral\n", ntohs(a), ntohs(a));
printf("Used htons(ntohs()) with a, getting: %x Hex and %d Numeral\n", htons(ntohs(a)), htons(ntohs(a)));
printf("Used ntohs(htons()) with a, getting: %x Hex and %d Numeral\n", ntohs(htons(a)), ntohs(htons(a)));

The following are the results:

Used htons with a, getting: 8001 Hex and 32769 Numeral
Used ntohs with a, getting: 8001 Hex and 32769 Numeral
Used htons(ntohs()) with a, getting: 180 Hex and 384 Numeral
Used ntohs(htons()) with a, getting: 180 Hex and 384 Numeral

I am using the program on a little-endian machine. I understand how 8001H and 32769 are derived but why are the first 2 results the same??
 

2 More Discussions You Might Find Interesting

1. Programming

ntohs

" How do i write the function specifying the processor supports little-endian or big-endian"----May be similar to ntohs????? (1 Reply)
Discussion started by: chamarthi
1 Replies

2. Programming

How to use htons() function?

Hi I am constructing an ICMP packet using C++ and want to convert sequence number into network byte order. I know we can use htons: here is my code: struct ICMPheader { unsigned int seqence_no; }; ICMPheader header; header.sequence_no = htons (sequence_no++); but it is giving... (3 Replies)
Discussion started by: manmeet
3 Replies
BYTEORDER(3)						     Linux Programmer's Manual						      BYTEORDER(3)

NAME
htonl, htons, ntohl, ntohs - convert values between host and network byte order SYNOPSIS
#include <arpa/inet.h> uint32_t htonl(uint32_t hostlong); uint16_t htons(uint16_t hostshort); uint32_t ntohl(uint32_t netlong); uint16_t ntohs(uint16_t netshort); DESCRIPTION
The htonl() function converts the unsigned integer hostlong from host byte order to network byte order. The htons() function converts the unsigned short integer hostshort from host byte order to network byte order. The ntohl() function converts the unsigned integer netlong from network byte order to host byte order. The ntohs() function converts the unsigned short integer netshort from network byte order to host byte order. On the i386 the host byte order is Least Significant Byte first, whereas the network byte order, as used on the Internet, is Most Signifi- cant Byte first. ATTRIBUTES
For an explanation of the terms used in this section, see attributes(7). +-----------------------------------+---------------+---------+ |Interface | Attribute | Value | +-----------------------------------+---------------+---------+ |htonl(), htons(), ntohl(), ntohs() | Thread safety | MT-Safe | +-----------------------------------+---------------+---------+ CONFORMING TO
POSIX.1-2001, POSIX.1-2008. Some systems require the inclusion of <netinet/in.h> instead of <arpa/inet.h>. SEE ALSO
bswap(3), endian(3), gethostbyname(3), getservent(3) COLOPHON
This page is part of release 4.15 of the Linux man-pages project. A description of the project, information about reporting bugs, and the latest version of this page, can be found at https://www.kernel.org/doc/man-pages/. GNU
2017-09-15 BYTEORDER(3)
All times are GMT -4. The time now is 04:00 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy