3 回答

TA貢獻1895條經(jīng)驗 獲得超3個贊
C#本身未定義字節(jié)序。但是,無論何時轉(zhuǎn)換為字節(jié),您都在做出選擇。該BitConverter類有一個IsLittleEndian場告訴你這將如何表現(xiàn),但它不給的選擇。BinaryReader / BinaryWriter也是如此。
我的MiscUtil庫有一個EndianBitConverter類,它允許您定義字節(jié)序;BinaryReader / Writer有類似的等效項??峙聸]有在線使用指南,但它們并不重要:)
(EndianBitConverter還具有普通BitConverter中不存在的功能,該功能可以在字節(jié)數(shù)組中就地進行轉(zhuǎn)換。)

TA貢獻2080條經(jīng)驗 獲得超4個贊
關(guān)于小尾數(shù),簡短的答案(我需要做任何事情)是“可能沒有,但這取決于您的硬件”。您可以通過以下方式進行檢查:
bool le = BitConverter.IsLittleEndian;
根據(jù)這句話,您可能希望反轉(zhuǎn)緩沖區(qū)的某些部分。另外,喬恩斯基特具有特定端轉(zhuǎn)換這里(尋找EndianBitConverter)。
請注意,例如,鈦是大端的。大多數(shù)英特爾都是低端的。
是特定的UDP / IP ...嗎?

TA貢獻1812條經(jīng)驗 獲得超5個贊
您需要了解網(wǎng)絡(luò)字節(jié)順序以及CPU字節(jié)序。
通常,對于TCP / UDP通訊,您總是使用htons函數(shù)(和ntohs和它們及其相關(guān)函數(shù))將數(shù)據(jù)轉(zhuǎn)換為網(wǎng)絡(luò)字節(jié)順序。
通常,網(wǎng)絡(luò)順序為高位優(yōu)先,但在這種情況下(出于某種原因?。?,通信是低位優(yōu)先,因此這些功能不是很有用。這很重要,因為您不能假設(shè)它們實現(xiàn)的UDP通訊遵循任何其他標準,如果您使用的是大端架構(gòu),這也將給您帶來生活上的困難,因為您無法按需包裝所有內(nèi)容htons:-(
但是,如果您使用的是Intel x86架構(gòu),那么您已經(jīng)是低位字節(jié)序了,因此只需發(fā)送數(shù)據(jù)而無需進行轉(zhuǎn)換。
- 3 回答
- 0 關(guān)注
- 381 瀏覽
添加回答
舉報