سؤال

وBitConverter.ToUInt16 () تتوقع بايت ليتم عكسه، واعتقد ان هذه هي الطريقة يتم تخزينها في الذاكرة. ولكن كيف يمكنني تحويله عندما لا عكسه، ث / س تعديل المصفوفة؟

Byte[] ba = { 0, 0, 0, 6, 0, 0 };
BitConverter.ToUInt16(ba, 2); // is 1536/0x0600, but I want 6/0x0006
هل كانت مفيدة؟

المحلول

وهذا يبدو وكأنه كنت تريد EndianBitConverter بلدي في MiscUtil ، والتي تمكنك من تحديد ما إذا كنت تريد استخدام endianness كبيرة أو صغيرة.

وأساسا لأنها توفر نفس الوظائف ك BitConverter لكن وسائل المثال. ثم تحصل النوع المناسب من EndianBitConverter وتفعل ما تريد مع ذلك.

و(وهو يوفر أكثر قليلا وظائف للعمل بكفاءة مع صفائف، التي قد تكون أو لا تكون مفيدة لك.)

وومفتوحة المصدر مكتبة تحت رخصة متساهلة إلى حد ما.

نصائح أخرى

ويمكنك أيضا استخدام IPAddress.HostToNetworkOrder.

وأعتقد أن أفضل مكالمتك يكون لعكس المصفوفة مع طريقة Array.Reverse.

HTTP: // MSDN. microsoft.com/en-us/library/system.array.reverse(VS.71).aspx

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top