目录
语法
说明
示例
交换标量的字节顺序
交换向量的字节顺序
交换三维数组的字节顺序
swapbytes函数的功能交换字节顺序。
语法
Y = swapbytes(X)
说明
Y = swapbytes(X) 将数组 X 中每个元素的字节排序从 little endian 转换为 big endian(或相反)。输入数组的所有元素必须是完整的非复数数值元素。
示例
交换标量的字节顺序
将字节顺序转换为标量 32 位值。使用十六进制表示来显示从 little endian 到 big endian 的转换。
X = uint32(hex2dec('4D3C2B1A'));
Y = dec2hex(swapbytes(X))
Y =
'1A2B3C4D'
从 R2019b 开始,您还可以使用 0x 或 0X 前缀指定十六进制字面值(有关详细信息,请参阅十六进制和二进制值)。将数 X 指定为十六进制字面值。交换字节顺序。
X = 0x4D3C2B1A;
Y = dec2hex(swapbytes(X))
Y =
'1A2B3C4D'
交换向量的字节顺序
交换 1×4 向量的每个元素的字节顺序。
format short
X = uint16([0 1 128 65535])
X = 1x4 uint16 row vector
0 1 128 65535
Y = swapbytes(X)
Y = 1x4 uint16 row vector
0 256 32768 65535
检查采用十六进制记数法的输出是否显示了 endian 转换。
format hex
X
X = 1x4 uint16 row vector
0000 0001 0080 ffff
Y
Y = 1x4 uint16 row vector
0000 0100 8000 ffff
交换三维数组的字节顺序
创建包含 16 位整数的三维数组A。交换每个元素的字节顺序。使用十六进制表示来显示 endian 转换。
format hex
X = uint16(magic(3)*150);
X(:,:,2) = X*40;
X
X = 3x3x2 uint16 array
X(:,:,1) =
04b0 0096 0384
01c2 02ee 041a
0258 0546 012c
X(:,:,2) =
bb80 1770 8ca0
4650 7530 a410
5dc0 d2f0 2ee0
Y = swapbytes(X)
Y = 3x3x2 uint16 array
Y(:,:,1) =
b004 9600 8403
c201 ee02 1a04
5802 4605 2c01
Y(:,:,2) =
80bb 7017 a08c
5046 3075 10a4
c05d f0d2 e02e
参数说明
X
— 数值
数值,指定为标量、向量、矩阵或多维数组。如果 X 为非标量,则按元素执行 swapbytes 运算。
将 Little Endian 转换为 Big Endian
计算机系统以字节为单位存储数据。在计算机内存中存储数值有两种方法:little endian 和 big endian。在 little-endian 样式中,字节的有效位从左到右递增。在 big-endian 样式中,字节的有效位从左到右递减。swapbytes 函数交换内存中的字节顺序,将 little endian 转换为 big endian(或相反)。
下图说明了 32 位(4 字节)十六进制数 4D3C2B1A 的转换。在十六进制记数法中,一个字节用两个位表示。Little-endian 图中的每个框显示一个字节的数据(4D、3C、2B 和 1A)。swapbytes 函数交换这些框或字节的顺序。