Bir sistemin büyük bir endian mı yoksa küçük bir endian mı olduğunu nasıl kontrol edebilirim?Bir sistemin büyük bir endian veya küçük bir endian olup olmadığını nasıl kontrol edilir?
cevap
.NET kullanıyorsanız: BitConverter.IsLittleEndian
değerini kontrol edin. Ayrıca C
Başka C kodu kullanarak birlik
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");
Kullanılan BELWOOD aynı mantık.
Bunun standart olarak uyumlu olmadığını düşünüyorum: sadece alanı en son yazdığınız tanımlanmış bir davranıştan okuyamazsınız, aksi halde yanlış tanımlanmış olabilirsiniz, yoksa yanılıyor muyum? – worenga
sendikaları, standartta "haklı" belirtmez. Bu doğru bir çözüm değildir (belirli bir OS/Compiller'da yanlışlıkla çalışabilir). – jaskmar
Bazıları yukarıdaki programdaki mantığı açıklayabilir. Eğer üye değişkeni i, x.1 = 1 ile başlatıyorsa, x.c [0] 'nın nasıl 1 olduğu ortaya çıkıyor. Burada bir noktayı kaçırıyor muyum? Benim anlayışım, sendikanın en büyük veri türünün belleğini alması ve ona erişebildiğimize bağlı olmasıdır. Sadece bir üyeye erişilebilir. Sendikanın en büyük veri türünün hafızasını aldığına ve ona erişebildiğimize bağlı olarak, herhangi bir yanıt, –
C++ çözeltisi: Linux
namespace sys {
const unsigned one = 1U;
inline bool little_endian()
{
return reinterpret_cast<const char*>(&one) + sizeof(unsigned) - 1;
}
inline bool big_endian()
{
return !little_endian();
}
} // sys
int main()
{
if(sys::little_endian())
std::cout << "little";
}
'reinterpret_cast', sabit bir ifadenin içinde kullanılamaz. –
@ T.C. Gah! Çok kötü. Thnx :) – Galik
, `Python'da
static union { char c[4]; unsigned long mylong; } endian_test = { { 'l', '?', '?', 'b' } };
#define ENDIANNESS ((char)endian_test.mylong)
if (ENDIANNESS == 'l') /* little endian */
if (ENDIANNESS == 'b') /* big endian */
Neeraj'ın versiyonundan farkı nedir? –
:
from sys import byteorder
print(byteorder)
Bunun en basit ve en iyi cevap olduğunu düşünüyorum, teşekkürler! – mdandr
varsayılan olarak monte edilmelidir Perl ile tek astar (hemen hemen tüm sistemler):
perl -e 'use Config; print $Config{byteorder}'
Çıktı 1 (en az anlamlı bayt) ile başlıyorsa, bu küçük-endian sistemidir. Çıkış daha yüksek bir rakamla başlarsa (en anlamlı bayt), bu büyük bir endian sistemdir. Config modülünün belgelerine bakın.
- 1. Big-endian vs. küçük endian makineler
- 2. Nvidia'nın GPU'larının büyük mü yoksa küçük bir endian olup olmadığını bilen var mı?
- 3. Bir Big-Endian sisteminde htons() ne yapar?
- 4. (java) Dosyaya yazı yazıyor küçük endian
- 5. Küçük endian bitmapler & "Kötü grafik verileri nedeniyle GMSGLImageTile oluşturulamıyor"
- 6. Bir işlemin yönetimsel hakları olup olmadığını nasıl kontrol edilir
- 7. Grafeme bir mektup olup olmadığını nasıl kontrol edilir?
- 8. Konteynerin sabit olup olmadığını nasıl kontrol edilir
- 9. sql_safe_updates açık olup olmadığını nasıl kontrol edilir?
- 10. ASCII olup olmadığını bir String nasıl kontrol edilir?
- 11. Dize belirli bir aralıkta olup olmadığını nasıl kontrol edilir. (Java)
- 12. Twig - Değişken bir sayı/tamsayı olup olmadığını nasıl kontrol edilir
- 13. gedit'te bir metin dosyasının açık olup olmadığını nasıl kontrol edilir
- 14. Nesnenin belirli bir tür olup olmadığını nasıl kontrol edilir
- 15. Seçme kutusunda bir değer olup olmadığını nasıl kontrol edilir
- 16. Alan boş veya boş mysql olup olmadığını nasıl kontrol edilir?
- 17. Arabirim olup olmadığını nasıl kontrol edilir
- 18. Iki dosya olup olmadığını nasıl kontrol edilir
- 19. Bir dosya olup olmadığını nasıl kontrol edebilirim?
- 20. TextView boş olup olmadığını nasıl kontrol edilir?
- 21. Python'da "küçük endian" hex dizesini IP adresine dönüştürün
- 22. Bir çerez olup olmadığını nasıl kontrol edersiniz?
- 23. Kullanıcının yazı tipinin (DPI) küçük, büyük veya başka bir şekilde ayarlanmış olup olmadığını nasıl anlarım?
- 24. Dosya sisteminin büyük/küçük harfe duyarlı olup olmadığını nasıl anlarım?
- 25. Bir değerin bir değerler dizisinde olup olmadığını nasıl kontrol edebilirim?
- 26. Bir yöntemin yansıma kullanarak statik olup olmadığını nasıl kontrol edebilirim?
- 27. Nesnenin bir NSArray veya NSDictionary olup olmadığını kontrol edin
- 28. Bir yolun mutlak veya göreli olup olmadığını kontrol edin
- 29. Kontrol kilit bir Python listede olup olmadığını
- 30. Bir HTML giriş elemanının boş olup olmadığını kontrol edin veya
İyi bir yanıt, ancak bu neler olup bittiğini güzel bir şekilde gösterir: http://stackoverflow.com/a/12792301/803801 – gsingh2011
Gerçekten güzel bir diyagramdır - eklediğiniz için teşekkürler. – belwood