交换字节。
语法
void _swab(
char *src,
char *dest,
int n
);
参数
src
要复制和交换的数据。
dest
已交换数据的存储位置。
n
要复制和交换的字节数。
返回值
swab 函数不返回值。 如果 src 或 dest 指针为空指针或 n 小于零,则函数将 errno 设置为 EINVAL,并调用无效的参数处理程序,如参数验证中所述。
有关返回代码的详细信息,请参阅 errno、_doserrno、_sys_errlist 和 _sys_nerr。
备注
如果 n 值为偶数,_swab 函数将从 n 复制 src 个字节,交换每对相邻的字节,并将结果存储在 dest 上。 如果 n 为奇数,则 _swab 复制并交换 src 的前 n-1 字节,而不复制最后一个字节。 _swab 函数通常用于准备要传输到使用不同的字节顺序的计算机的二进制数据。
默认情况下,此函数的全局状态范围限定为应用程序。 若要更改此行为,请参阅 CRT 中的全局状态。
要求
| 例程 | 必需的标头 |
|---|---|
_swab |
C:<stdlib.h> C++:<cstdlib> 或 <stdlib.h> |
有关兼容性的详细信息,请参阅 兼容性。
示例
// crt_swab.c
#include <stdlib.h>
#include <stdio.h>
char from[] = "BADCFEHGJILKNMPORQTSVUXWZY";
char to[] = "...........................";
int main()
{
printf("Before: %s %d bytes\n %s\n\n", from, sizeof(from), to);
_swab(from, to, sizeof(from));
printf("After: %s\n %s\n\n", from, to);
}
Before: BADCFEHGJILKNMPORQTSVUXWZY 27 bytes
...........................
After: BADCFEHGJILKNMPORQTSVUXWZY
ABCDEFGHIJKLMNOPQRSTUVWXYZ.