我需要將Int32值轉換爲3字節(24位)整數。字節順序保持不變(很少),但我無法弄清楚如何正確移動標誌。值已經被限制在適當的範圍,我只是無法弄清楚如何將4個字節轉換爲3.使用C#4.0。這是爲了硬件集成,所以我必須有24位值,不能使用32位。將Int32轉換爲24位有符號整數
3
A
回答
1
如果你想要做這種轉換,只需刪除四字節數字的頂部字節。補碼錶示法將正確處理符號。如果你想保留一個Int32
變量的24位數字,你可以使用v & 0xFFFFFF
來得到低24位。我看到了你對字節數組的評論:如果你在數組中有空間,寫下數字的全部四個字節,然後發送前三個字節;儘管這是小端系統特有的。
2
發現這一點:http://bytes.com/topic/c-sharp/answers/238589-int-byte
int myInt = 800;
byte[] myByteArray = System.BitConverter.GetBytes(myInt);
聽起來像你只需要得到數組的最後3個元素。
編輯:
耶利米指出的那樣,你需要做的是這樣
int myInt = 800;
byte[] myByteArray = System.BitConverter.GetBytes(myInt);
if (BitConverter.IsLittleEndian) {
// get the first 3 elements
} else {
// get the last 3 elements
}
相關問題
- 1. 在Matlab中將24位ADC串行讀取數據從3字節格式轉換爲帶符號整數(int32)
- 2. 將n位整數從無符號轉換爲有符號
- 3. 轉換爲32位整數24位整數(2S補碼)在C++
- 4. 將Int32.Maximum +數值轉換爲int32
- 5. 將curl_version()轉換爲版本字符串的24位版本號
- 6. 如何將無符號的24位int轉換爲帶符號的int並將符號擴展爲32位?
- 7. C++有符號整數轉換爲無符號位數更多位
- 8. C#:將24位整數轉換爲三字節數組?
- 9. 如何將24位整數轉換爲3字節數組?
- 10. 將Ruby符號轉換爲整數
- 11. 將24位bmp轉換爲16位?
- 12. 將32位bmp轉換爲24位
- 13. 上午/下午將24位整數轉換爲12小時
- 14. AWK將大無符號整數轉換爲有符號整數(二進制)
- 15. 將原始14位二進制補碼轉換爲有符號16位整數
- 16. 無符號整數Java位轉換
- 17. 在python中將字符串轉換爲8位有符號整數
- 18. 將有符號整數轉換爲無符號長整型的最佳方法?
- 19. 將二進制字符串轉換爲有符號整數 - Python
- 20. 將4個字符串轉換爲int32
- 21. 如何將Int32 *轉換爲Int32?
- 22. 將二進制數據轉換爲有符號整數
- 23. 將無符號整數變量轉換爲帶符號變量
- 24. 將UIColor轉換爲24位值
- 25. 將24位RGB轉換爲ARGB16
- 26. 有效地將無符號數轉換爲有符號數
- 27. 將4位8位無符號整數轉換爲32位浮點型
- 28. 將Int32轉換爲布爾
- 29. 在BitArray轉換爲13位有符號整數再轉換的4位中BitArray整數
- 30. 將bitstring轉換爲32位有符號整數會產生錯誤的結果
你打算存儲的24位整數什麼類型的? – 2011-02-07 06:17:31
一個字節數組就好了。我將通過一個串行連接輸出3個字節,所以只要我能將它們轉換成字節,我就可以走了。 – drharris 2011-02-07 06:18:44
第三行不會做任何事情(`i&0xffffff`總是正數)。此外,您可能想要遵循Joe的答案的第二部分,該答案適用於具有不同字節順序的系統;你現在的代碼將會工作,但是如果你嘗試在PowerPC或MIPS上運行它,將會以不同尋常的方式破解。 – 2011-02-07 07:08:39