تحويل بايت صفيف في C # أمثال INT-
سؤال
و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