---
name: "swab"
section: "3"
platform: "linux"
package: "man-pages"
version: "6.19-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux", "freebsd", "macos"]
url: "https://new.carta.tech/swab/3"
---

# swab(3)

swap adjacent bytes

## NAME

swab - swap adjacent bytes

## LIBRARY

Standard C library (*libc*, *-lc*)

## SYNOPSIS

```
#define _XOPEN_SOURCE       /* See feature_test_macros(7) */
#include <unistd.h>
```

**void swab(**ssize\_t n;           **const void** *from***\[restrict** *n***\], void** *to***\[restrict** *n***\],**           **ssize\_t** *n***);**

## DESCRIPTION

The **swab**() function copies *n* bytes from the array pointed to by *from* to the array pointed to by *to*, exchanging adjacent even and odd bytes. This function is used to exchange data between machines that have different low/high byte ordering.

This function does nothing when *n* is negative. When *n* is positive and odd, it handles *n-1* bytes as above, and does something unspecified with the last byte. (In other words, *n* should be even.)

## RETURN VALUE

The **swab**() function returns no value.

## ATTRIBUTES

For an explanation of the terms used in this section, see [**attributes**(7)](/attributes/7.md).

| | | |
| --- | --- | --- |
| **Interface** | **Attribute** | **Value** |
| **swab**() | Thread safety | MT-Safe |

## STANDARDS

POSIX.1-2008.

## HISTORY

POSIX.1-2001, SVr4, 4.3BSD.

## SEE ALSO

[**bstring**(3)](/bstring/3.md)
