- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我需要将短值从主机字节顺序转换为小端字节序。如果目标是 big endian,我可以使用 htons() 函数,但可惜 - 它不是。
我想我可以:
swap(htons(val))
但这可能会导致字节被交换两次,使结果正确,但会给我带来性能损失,这在我的情况下是不合适的。
最佳答案
这是一篇关于字节顺序以及如何从 IBM 确定它的文章:
Writing endian-independent code in C: Don't let endianness "byte" you
它包括一个如何在运行时确定字节顺序的示例(您只需要执行一次)
const int i = 1;
#define is_bigendian() ( (*(char*)&i) == 0 )
int main(void) {
int val;
char *ptr;
ptr = (char*) &val;
val = 0x12345678;
if (is_bigendian()) {
printf(“%X.%X.%X.%X\n", u.c[0], u.c[1], u.c[2], u.c[3]);
} else {
printf(“%X.%X.%X.%X\n", u.c[3], u.c[2], u.c[1], u.c[0]);
}
exit(0);
}
该页面还有一个关于反转字节顺序的方法的部分:
short reverseShort (short s) {
unsigned char c1, c2;
if (is_bigendian()) {
return s;
} else {
c1 = s & 255;
c2 = (s >> 8) & 255;
return (c1 << 8) + c2;
}
}
;
short reverseShort (char *c) {
short s;
char *p = (char *)&s;
if (is_bigendian()) {
p[0] = c[0];
p[1] = c[1];
} else {
p[0] = c[1];
p[1] = c[0];
}
return s;
}
关于c++ - 如何将值从主机字节顺序转换为小端字节序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1873352/
我正在尝试在 Raspberry Pi(使用 C 编程)和 Arduino(使用 Arduino IDE)之间发送和接收数据。 根据我在互联网上可以找到的内容,它指出两者都是小端格式。 我在 teun
考虑这段代码: int a=0x10000001; char b; b=(char)a; printf("%#x \n",b); 在我的 PC 上它打印 0x01,我并不感到惊讶。它在 BIG END
我需要你的帮助。我想使用以下代码,因为我正在开发一个音频工具(仅适用于 .wav 文件),其主要功能是显示信号波形。大端和小端是我无法控制的元素。我认为以下代码解决问题的方式是正确的:- 如果音频文件
我有一个十六进制字符串,其内容为18000000,该字符串采用主机字节顺序(小端),我需要将其转换为网络字节顺序(大端)。生成的十六进制字符串将为 00000018。 总而言之,我需要转换180000
我有一个十六进制字符串,其内容为18000000,该字符串采用主机字节顺序(小端),我需要将其转换为网络字节顺序(大端)。生成的十六进制字符串将为 00000018。 总而言之,我需要转换180000
我有一个整数列表,比如说 L,它包含一个数字的二进制表示。列表L中的每个整数可以是0或1。“最低有效位”在左边(不是在右边)。 示例:1000001111 代表(十进制)数字 961,或 011101
我有来自实验的Base64 编码数据。所以我想逐步做的是: 从 base64 编码中检索字节(解码) 将字节转换为小端 从 (zlib) 中解压字节 字节数组转 float 组 示例: Dn3LQ3n
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 7 年前。 Improve this ques
解码字节时,binary.Read()要求您指定该操作的预期字节顺序。 binary.Read() 还允许您传入结构,但据我所知,它使用相同的字节顺序将字节流解码到结构中的每个字段中。 当编码整数的字
我将 24 位单声道音频 .wav 文件读入 > 7) * 255 data = a.view('
我正在解码一个二进制文件,它有用四个字节表示的十进制数字,小端。例如,94 53 F0 40代表 7.510202。不幸的是,Python 给了我 7.51020240784。 当我尝试使用 unpa
这种传输语法中的数据是如何组织的?来自标准的描述: This Transfer Syntax applies to the encoding of the entire DICOM Data Set.
我是一名优秀的程序员,十分优秀!