سؤال

هل هناك صافي لاستضافة وظائف التحويل في C #؟ googling وعدم العثور على الكثير. : P.

هل كانت مفيدة؟

المحلول

IPAddress.HostToNetworkOrder و IPAddress.NetworkToHostOrder?

تحتوي كل طريقة على الأعداد الصحيحة من 16 و 32 و 64 بت.

نصائح أخرى

@ إجابة jon-skeet هو الأكثر دقة وفقا لسؤالك. ومع ذلك، فإن وظائف "NTOH_ 'و" HTON_' C تستخدم على نطاق واسع من أجل ترجمة بنية الكمبيوتر الصغيرة والناذة.

إذا كان نيتك لإجراء التحويلات السرية, ، هناك فئة bitconverter (فئة ثابتة في الجمعية الأساسية) التي تجلب لك طريقة أكثر ملاءمة. خصيصا عندما:

  • العمل مع مجموعة من البايتات (تستخدم على نطاق واسع في تدفق الملفات أو الشبكة).
  • الكشف عن الأنابيب بنية آلة وقت التشغيل.
  • تحويل الهياكل الأساسية وراء الأعداد الصحيحة (المنطمنون، الكسور العشرية) دون تكييف.
  • لا يرتبط التعليمات البرمجية الخاصة بك بعمليات الشبكة (مساحة الاسم System.NET).

ال ذاكرة النظام حزمة Nuget تشمل System.Buffers.Binary.BinaryPrimitives فئة ثابتة، بما في ذلك الطرق الثابتة للتعامل مع "الانتخاب"، بما في ذلك العديد من الحمل الزائد ReverseEndianness. وبعد على dotnet الأساسية، HostToNetWorkOrder يتم تنفيذها باستخدام هذه ReverseEndianness أساليب . على الهندسة المعمارية الهندية الصغيرة (التي أعتقد أنها كلها تدعم .NET) HostToNetworkOrder و ReverseEndianness الأساليب لها أداء متطابق على DotNetCore.

في إطار DotNet (NET461) ومع ذلك، فإن أداء الاتصال HostToNetworkOrder هو قليلا (ليس 2X تماما) أبطأ من الاتصال ReverseEndianness.

أعتقد أن مترجم JIT هو في الواقع غلاف خاص هذه الأساليب لاستدعاء تعليمات BSWAP X86. إذا كنت تكرار بالضبط تنفيذ ReverseEndianness(long) الطريقة في CodeBase الخاصة بك، سيكون ما يقرب من 4x أبطأ من الاتصال System.Memory التنفيذ؛ مما يقترح وجود جيت سحر يحدث.

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