C# cinsinden bir iki bayta nasıl dönüştürebilirim?C# 'da int'yi iki bayta nasıl dönüştürebilirim?
cevap
sadece düşük bayt istiyorum varsayarsak:
byte b0 = (byte)i,
b1 = (byte)(i>>8);
Ancak 'int' beri uncaptured 2 daha bayt bırakır 'Int32' dir.
Bu benim çözümüm. Çok fazla BitConverter'den daha hızlı olmalı. – Joshua
@Joshua, Hızlı bir benchmark yaptım (Sürüm oluşturma, 50000000 yineleme, Kronometre ve çeşitli testler kaldırmak için iki kez yinelenen tam test) ve bir dizi oluşturma ve bit maskeleme kullanarak BitConverter çağırma arasındaki fark yaklaşık 1ns başına Makinemi çağır. Dizi oluşturmayı kaldırırsanız (sadece iki bayt olsun), fark yaklaşık 14ns'dir. –
Kriterlerinden şüphe etmiyorum. BitConverter, dizileri ayırmak zorunda olduğu için karşılaştırmada yavaştır. Dizi büyüklüğümü binlerce tam sayı için önceden algılayabiliyorsam, çok az zaman harcayabilirim. – Joshua
Bir Int32 içeren baytları almak için BitConverter.GetBytes kullanabilirsiniz. , 2.
bunu yapmak için başka bir yol yoktur, ancak, sonuçta 4 bayt olmayacak diğer yöntemler gibi kaygan olmasına rağmen:
Int32 i = 38633;
byte b0 = (byte)(i % 256);
byte b1 = (byte)(i/256);
bir int16 mı?
Int16 i = 7;
byte[] ba = BitConverter.GetBytes(i);
Bu, içinde yalnızca iki bayt olacaktır.
- 1. Tamsayı iki bayta ayırma
- 2. C++ 'da uzun bir dizgiye nasıl dönüştürebilirim?
- 3. C++ 'da iki string strcat'i karşılaştırmak istiyorum
- 4. C++ 'da iki tam sayı çarpımı
- 5. C# 'da bir bağlantı dizesinde iki veritabanına nasıl bağlanır?
- 6. C++ 'da iki katına bir vektörün birikimli toplamı nasıl hesaplanır?
- 7. C++ 'da nasıl yazılır?
- 8. c veya C++ 'da iki işaretçi eklenmesi desteklenmez. niye ya?
- 9. Bir dize kaç bayta sahip
- 10. Nasıl full C# projeyi vb.net'e dönüştürebilirim?
- 11. XSD dosyasını C# Sınıfına nasıl dönüştürebilirim
- 12. Unicode yolunu bir c dizesine nasıl dönüştürebilirim?
- 13. C# temsilci işlevini VB.Net'e nasıl dönüştürebilirim?
- 14. DiffTime'ı NominalDiffTime'a nasıl dönüştürebilirim?
- 15. C++ 'da çevreler topluluğu
- 16. C/C++'da Windows Hizmeti Nasıl Oluşturulur?
- 17. 16 bit imzalanmış int'yi 2 bayta dönüştürün?
- 18. C++ 'da ortalama nasıl edinilir?
- 19. C# 'da Bluetooth'u nasıl birleştirebilirim?
- 20. Her iki tarafta da kaydırıcının nasıl ayarlanacağı
- 21. Nasıl C, iki dizeleri nasıl C
- 22. C# içindeki LINQ kullanarak bir Sözlük'ten SortedDictionary öğesine nasıl dönüştürebilirim?
- 23. C++ 'da Dönüşüm Operatörleri
- 24. , her iki yol da doğru
- 25. C++ 'da renkli çıktı
- 26. C++ 'da Soket Programlama
- 27. C++ 'da başvuru ekleme "
- 28. C++ 'da Paralel Döngüler
- 29. C++'da N bit değişkenleri nasıl oluşturulur?
- 30. System.Byte [] öğesini Image'ye nasıl dönüştürebilirim? (C# pencere formları)
Int'in hangi bölümü? Tam 32 bitlik bir tamsayı değerini kodlamak için iki bayt yeterli değildir. – dtb
'int', depolama için 4 bayt gerektirir. MSB'lerde bilgileri kaybetmek ister misiniz? –
Kim * bip * bunu düşürdü. C yolu aniden C# için iyi bir neden olmadan işe yaramaz ve açık API'lar mevcut olmadığından (BitConverter yavaştır ve birçok şekilde * kırık *) bu yararlı ve ilginç bir sorudur. – Joshua