在不进行隐式/显式强制转换的情况下在C中查找字节序

悉达思·卡玛里亚(Siddharth Kamaria)

我期待找到一种方法,可以在不进行隐式/显式强制转换,循环,切换,内置函数,宏的情况下找到字节序我试过了一个代码,但它使用了显式强制转换。

int is_little_endian(){
    int temp = 1;
    return *(char *) temp;//Returns 1 if it's a little endian machine.
}

[编辑]

它必须在不使用任何转换的情况下完成。我找不到一个问题,我们可以在不强制转换和不使用宏的情况下做到这一点。本文中的隐式转换是指编译器自动转换。从char到int说。

R .. GitHub停止帮助ICE

没有所谓的“隐式强制转换”-强制转换是显式运算符。但是,如果您要查找的是一种无需检查对象表示即可观察字节序的方法,则没有办法。字节序纯属表示形式的属性,而不是值的属性,因此,如果您限制自己访问表示形式,则不存在。这就是为什么大多数好的代码都不关心字节序的原因。

如果您确实想要作弊并访问制图表达,但又不想看起来像演员,那么这里有一些想法:

int i = 1;
char c;
memcpy(&c, &i, 1);
c;

或者:

union { int i; char c; } x = { 1 };
x.c;

或者:

int i = 1;
FILE *f = tmpfile();
fwrite(&i, sizeof i, 1, f);
rewind(f);
getc(f);

或使用任何可能在后台为您执行类似操作的库函数。如果您使用的是POSIX系统或任何其他具有套接字操作的系统,也可以执行以下操作:

htonl(1) != 1;

但是,所有这些都依赖于检查表示形式或实现中关于目标字节序是什么的硬编码假设。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

C ++如何在不进行隐式转换的情况下模拟函数?

在不进行大量分配的情况下在io.ReadCloser中查找字符串

在这种情况下,通过构造函数或显式函数进行隐式转换的更好的方法是什么?

显式/隐式类型转换C ++

隐式和显式强制转换的优缺点

泛型的显式和隐式强制转换

为什么Java增量运算符允许不进行显式强制转换的缩小操作?

C#隐式/显式字节数组转换

C ++-处理隐式/显式强制转换,同时保持灵活的代码

C++ 如何在不显式转换的情况下在函数调用中降级类实例?

在不进行整数转换的情况下在Java中处理整数值?

是否可以禁止C ++中的隐式强制转换?

为什么这里不进行隐式转换?

在没有 fimplicit 或 ezplot 的情况下在 MatLab 中绘制 2 变量隐式函数

是否可以在不进行签名重复的情况下使用decltype(或类似方法)进行显式模板实例化?

如何在不编写显式for循环的情况下在jQuery操作中引用结果索引?

如何在没有显式定义的情况下在SAM中启用“ ApiKeyRequired”属性?

为什么隐式强制转换比JS中的显式转换快得多?隐式转换是一种好习惯吗?

在隐式提交的情况下强制回滚

无法隐式转换类型,存在显式转换(您是否缺少强制转换?)

为什么在没有显式或隐式定义的情况下可以使用“ >> =”?

防止在模板强制方法中进行隐式转换

没有强制转换的C#隐式转换

强制C ++首选通过隐式转换而不是模板进行重载

使用“静态隐式运算符”进行C#强制转换问题

“ NSURL”不能隐式转换为“ URL”;您是说要使用“ as”进行显式转换吗?

泛型方法执行隐式强制转换,而非泛型方法则需要显式强制转换

C隐式转换?

C ++ 17:显式转换函数与显式构造函数+隐式转换-规则是否已更改?