bel*_*ood 67
在C,C++中
int n = 1;
// little endian if true
if(*(char *)&n == 1) {...}
Run Code Online (Sandbox Code Playgroud)
另请参见:Perl版本
Nik*_*rov 29
在Python中:
from sys import byteorder
print(byteorder)
# will print 'little' if little endian
Run Code Online (Sandbox Code Playgroud)
Nee*_*raj 10
另一个使用union的C代码
union {
int i;
char c[sizeof(int)];
} x;
x.i = 1;
if(x.c[0] == 1)
printf("little-endian\n");
else printf("big-endian\n");
Run Code Online (Sandbox Code Playgroud)
这与贝尔伍德使用的逻辑相同.
在 Rust 中(use不需要板条箱或声明)
在函数体中:
if cfg!(target_endian = "big") {
println!("Big endian");
} else {
println!("Little endian");
}
Run Code Online (Sandbox Code Playgroud)
在函数体之外:
#[cfg(target_endian = "big")]
fn print_endian() {
println!("Big endian")
}
#[cfg(target_endian = "little")]
fn print_endian() {
println!("Little endian")
}
Run Code Online (Sandbox Code Playgroud)
这就是byteorder板条箱内部所做的事情:https ://docs.rs/byteorder/1.3.2/src/byteorder/lib.rs.html#1877
在 C++20 中使用std::endian:
#include <bit>
#include <iostream>
int main() {
if constexpr (std::endian::native == std::endian::little)
std::cout << "little-endian";
else if constexpr (std::endian::native == std::endian::big)
std::cout << "big-endian";
else
std::cout << "mixed-endian";
}
Run Code Online (Sandbox Code Playgroud)
Perl的单行代码(应在几乎所有系统上默认安装):
perl -e 'use Config; print $Config{byteorder}'
Run Code Online (Sandbox Code Playgroud)
如果输出以1(最低有效字节)开头,则为小尾数系统。如果输出以较高的数字(最高有效字节)开头,则为big-endian系统。请参阅Config模块的文档。