سؤال

لماذا توجد شرطات في .NET GUID؟هل توجد شرطات في معظم تطبيقات المعرف الفريد العمومي (GUID)، أم أنه مجرد شيء خاص بشركة Microsoft؟

وقعت،

741ecf77-9c92-4435-8e6b-85975bd13452

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

المحلول

ومن الناحية الفنية، لا توجد "شرطات" في GUID . A GUID هو قيمة 128 بت والتي عادة ما تكون مخزنة على النحو التالي (باستخدام C # هنا لتمثيل هيكل):

public struct Guid
{
  public ulong Data1;
  public ushort Data2;
  public ushort Data3;
  public fixed byte Data4[8];
}

ووشرطات هي في سلسلة تمثيل من GUID.

ووشرطات اختيارية وغير مطلوبة في تمثيل سلسلة من GUID.

وقال ذلك، هناك أسباب تاريخية وإلى أين موضع شرطات و، المتعلقة بكيفية كانت المعرفات الفريدة العمومية ولدت، ولكن هذا الدلالي التاريخي لم يعد ينطبق.

نصائح أخرى

في الإصدار الأولي من مواصفات UUID (المعرف الفريد العالمي)، كان لكل عنصر من عناصر البيانات معنى دلالي:

{ time_low } – { time_mid } – { time_high_and_version } – { Clock_seq_and_reserved clock_seq_low } – { معرف_العقدة }

تم تصميم هذه العناصر لتوفير التفرد الزمني (البتات الزمنية)، والمكانية (البتات المضيفة).

تاريخ النسخة

نظرًا لأن الاحتمال الرياضي للاصطدامات في مساحة مفاتيح تبلغ 2^1024 بت عشوائي قد وجد أنه غير محتمل من الناحية الفلكية، فقد تخلصت الإصدارات اللاحقة من مواصفات UUID تدريجيًا من الوقت وبيانات المضيف لأسباب تتعلق بالأمان والخصوصية.

العناصر الوحيدة التي تحتفظ بأي معنى هي بتات الإصدار والبتات المحجوزة.

يتم اشتقاق معرفات UUID للإصدار 3 من تجزئة MD5 لعنوان URI أو أي اسم مميز آخر.

يتم إنشاء الإصدار 4 ببيانات عشوائية وهو حاليًا التطبيق الأكثر شيوعًا الذي ستراه في الواقع.

الإصدار 5 مشتق من تجزئة SHA1.

تنسيقات التخزين

نظرًا لأن الواصلات محددة لتنسيق ASCII لمعرفات UUID في RFC، على الرغم من أن الأقسام الفردية لم تعد تحتفظ بمعناها الأصلي، إلا أنها لا تزال مطلوبة إذا كنت بحاجة إلى إمكانية التشغيل البيني.

يتم أيضًا تخزين UUID في بعض الأحيان كسلسلة مشفرة base64 أو ascii85 لتوفير مساحة للإرسال عبر وسائل النقل غير الآمنة الثنائية، ولا يلزم الالتزام بـ RFC.

Ascii:   3F2504E0-4F89-11D3-9A0C-0305E82C3301
Base64:  7QDBkvCA1+B9K/U0vrQx1A
Ascii85: 5:$Hj:Pf\4RLB9%kU\Lj

مراجع:
RFC4122 (راجع الصفحة 3 خصيصًا للحصول على وصف ABNF لتنسيق UUID)
ويكيبيديا GUID UUID

والواصلات دلالة على بنية بايت من الدليل.

typedef struct _GUID 
{  
   DWORD Data1;  
   WORD Data2;  
   WORD Data3;  
   BYTE Data4[8];
} GUID;

ل:

(XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX)

وربما يمكنك أن تجريدهم قبل الحفظ. على الأقل في. NET منشئ نوع ارشد وتهيئة متغير ارشد من تمثيل سلسلة به بغض النظر عما إذا الواصلات لا تزال هناك أو إزالتها.

ويمكنك الحصول على ارشد الخاص بك في أشكال مختلفة.

وعلى افتراض كنت تستخدم ج #:

Guid guid = Guid.NewGuid();

Console.WriteLine(guid.ToString("N"))

و63be6f7e4e564f0580229f958f492077

Console.WriteLine(guid.ToString("D"))

و63be6f7e-4e56-4f05-8022-9f958f492077

Console.WriteLine(guid.ToString("B"))

{63be6f7e-4e56-4f05-8022-9f958f492077}

Console.WriteLine(guid.ToString("P"))

و(63be6f7e-4e56-4f05-8022-9f958f492077)

وانها مجرد الراحة.

http://en.wikipedia.org/wiki/GUID

وهذا مثال من تجزئة معلومات، تماما مثل أرقام الهواتف وأرقام بطاقات الائتمان وغيرها.

هنا مقالة ويكيبيديا جيدة حول هذا الموضوع.

وفقط عن كل تمثيل مرئي من ارشد التي رأيتها يستخدم تنسيق متقطع. انه من الاسهل بكثير على العيون.

والطبقة Guid من صافي تعترف مجموعة من الأشكال المختلفة: شرطات فواصل، لا فواصل، بين قوسين كمحددات، أقواس كمحددات، لا المحددات وغيرها

وتستخدم الواصلات لفصل كل رقم

وE93416C5-9377-4A1D-8390-7E57D439C9E7

Hex digits  Description
8           Data1
4           Data2
4           Data3
4           Initial two bytes from Data4
12          Remaining six bytes from Data4

وهذا فقط للراحة. يتكون GUID من 16 بايت التي تشكل 32 حرفا في تمثيل النص عرافة. دون المعرفات الفريدة العمومية الواصلات يصعب تصور من قبل البشر وأصعب ليتم الاعتراف بها المعرفات الفريدة العمومية وليس بعض الطبيعة العشوائية أرقام 16 بايت.

إذا كنت تريد تخزين GUID في مكان ما، ثم تخزينه بوصفها مجموعة من 16 بايت، وليس كما تمثيل نصه. وسوف توفر الكثير من الفضاء، وسوف مسألة الواصلات لا تنشأ.

ووGUID هو في الحقيقة مجرد رقم. الواصلات وتبين لكم كيف يتم تقسيم مختلف مكونات أسفل ولكنها ليست في الحقيقة جزء من العدد. انها مثل عنوان IP - يمكنك تخزين عدد 32 بت، أو يمكنك تخزين سلسلة مع النقاط في ذلك، فهي يعادل

ووhypens لها avsolutely أي تأثير على التفرد أو العشوائية من القيمة. فهي مجرد المستمر من تعريف GUID وبصريا فصل أجزاء منفصلة أربعة من البيانات التي تشكل GUID.

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