相关疑难解决方法(0)

在C++程序中以编程方式检测字节顺序

是否有一种编程方式来检测您是否在大端或小端架构上?我需要能够编写将在Intel或PPC系统上执行的代码并使用完全相同的代码(即没有条件编译).

c++ algorithm endianness

201
推荐指数
14
解决办法
10万
查看次数

C宏定义确定大端或小端机?

是否有一行宏定义来确定机器的字节顺序.我使用以下代码,但将其转换为宏将太长.

unsigned char test_endian( void )
{
    int test_var = 1;
    unsigned char test_endian* = (unsigned char*)&test_var;

    return (test_endian[0] == NULL);
}
Run Code Online (Sandbox Code Playgroud)

c architecture macros endianness

101
推荐指数
13
解决办法
9万
查看次数

C程序检查小与大端

可能重复:
C宏定义确定大端或小端机器?

int main()
{
  int x = 1;

  char *y = (char*)&x;

  printf("%c\n",*y+48);
}
Run Code Online (Sandbox Code Playgroud)

如果它是小端,它将打印1.如果它是大端,它将打印0.这是正确的吗?或者将char*设置为int x始终指向最低有效位,而不管字节顺序如何?

c byte endianness

60
推荐指数
4
解决办法
14万
查看次数

使用perl查找系统是小端还是大端

是否可以使用Perl查找我的系统是小端字节顺序还是大端字节顺序?

perl endianness

11
推荐指数
1
解决办法
5738
查看次数

大端还是小端?

可能重复:
如何检查系统是大端还是小端?

如何知道机器使用的是大端还是小端?有没有我可以写的代码呢?

c objective-c

2
推荐指数
1
解决办法
4669
查看次数

这段代码是真的知道系统是小端还是大端?

#include<stdio.h>
int main()                                                                                                                              
{
    unsigned int unum = 0x80008001;
    short unsigned int *snum = (short unsigned int*)&unum;
    printf("%d\n", *snum);
    printf("%d\n", *(snum+1));
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:

32769
32768
Run Code Online (Sandbox Code Playgroud)

snum指向unum的最初两个字节,但是它的值是unum的最后两个字节,并且在递增指针之后,value是unum的前两个字节.

所以,它是一个小端系统.但是,我不确定这种方式是否正确,以了解系统的类型.这是对的吗?

c endianness

2
推荐指数
1
解决办法
125
查看次数

标签 统计

endianness ×5

c ×4

algorithm ×1

architecture ×1

byte ×1

c++ ×1

macros ×1

objective-c ×1

perl ×1