سؤال

باستخدام ترميز ASCII، ما عدد الأحرف الموجودة في المعرف الفريد العمومي (GUID)؟

أنا مهتم بأسلوب Microsoft، الذي يتضمن الأقواس المتعرجة والشرطات.

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

المحلول

MSDN :

<اقتباس فقرة>   

وA GUID هو قيمة 128-بت تتألف   من مجموعة واحدة من 8 أرقام ست عشرية،   تليها ثلاث مجموعات من 4   عشري الأرقام لكل منهما، تليها   مجموعة واحدة من 12 أرقام ست عشرية.   المثال التالي يوضح GUID   مجموعات من أرقام ست عشرية في   GUID:   6B29FC40-CA47-1067-B31D-00DD010662DA

ويكيبيديا :

<اقتباس فقرة>   

وغالبا ما تتم إضافة الأقواس لإحاطة   فوق الشكل، على هذا النحو:

{3F2504E0-4F89-11D3-9A0C-0305E82C3301}

وهكذا ما مجموعه 38 حرفا في ترميز عشري نموذجي مع الأقواس المعقوفة.

و-Adam

نصائح أخرى

TL، DR: لا يوجد

وكما ذكر آدم ديفيس، وأسلوب مايكروسوفت هي ترميز HEX (مع الأقواس وشرطات لجعله أكثر قابلية للقراءة) التي يمكن عرضها باستخدام مجموعة فرعية من أحرف ASCII (0-9 وAF)، ولكن هذا ليس على وجه التحديد الترميز ASCII .

وأعتقد أنه من المهم أن نتذكر أن أسلوب مايكروسوفت على عرض لGUID ليست سوى تمثيل GUID، الذي هو في الواقع قيمة لا تتجزأ 16 بايت (كما ذكر مايكل Trausch).

ويمكنك أيضا تقديمه في مختلف النواحي، وأكثر إحكاما من خلال تحويل بايت في مجموعة أحرف مختلفة (مثل ASCII).

ونظريا يمكنك عرض كل بايت كحرف ASCII الموسعة (255 حرفا)، والتي من شأنها أن تسمح لك لانقاذ GUID كسلسلة طول 16 حرفا.

ولن يكون مقروء جدا على الرغم من أنه سيكون تتضمن الأحرف المسافات البيضاء (CR، الفضاء، التبويب، إلخ) والأحرف الخاصة الأخرى، لذلك هذا من شأنه أن يكون له معنى إلا إذا كنت تريد حفظ بكفاءة GUID في غير البشرية شكل حرف مقروء، على سبيل المثال في في قاعدة البيانات التي لا تدعم أصلا في GUID أو مطابقة سريع القيم الثنائية صغيرة: http://en.wikipedia.org/wiki/Extended_ASCII

وIMHO الطريقة الأكثر قابلية للقراءة لعرض GUID أكثر إحكاما سيكون لاستخدام ترميز Base64، والذي يسمح لك لحفظه في سلسلة بطول 22 حرفا، وسوف جعلها تبدو مثل هذا:

7v26IM9P2kmVepd7ZxuXyQ==

ولكن كما يقول جيف اتوود على موقعه، يمكنك أيضا الضغط على GUID إلى سلسلة المشفرة ASCII85 مع 20 حرفا:

[Rb*hlkkXVW+q4s(YSF0

لمزيد من الإلهام، انظر: http://www.codinghorror.com/blog/ 2005/10 / تجهيزها لدينا، أسكي-armor.html

<ع> كما ذكر آدم من الاقتباس MSDN، UUIDs هي القيم 128 بت. وهذا يعني أنها تأخذ 16 بايت من ذاكرة الوصول العشوائي لعقد قيمة. وهناك تمثيل النص تأخذ 32 بايت (اثنين بايت لكل بايت واحد)، بالإضافة إلى 4 الواصلات، بالإضافة إلى الأقواس اثنين إذا كنت تريد أن تدرج تلك. هذا لا يرقى إلى 38 بايت.

وفقط نأخذ في اعتبارنا أنه إذا كنت تعريض UUIDs لمستخدمي البرمجيات الخاصة بك، فإنها قد توفر UUID مع أو بدون الأقواس. إذا كنت تخزين قيمة في أي مكان، فمن الأفضل لتخزين أنها تمثيل ثنائي 16 بايت. إذا كنت تشغيل المتوافق مع تطبيقات UUID أخرى، قد ترغب في استخدام تنسيق النص الأساسي للتشغيل المتبادل، لأن تطبيقات مختلفة تفعل أشياء مختلفة لترتيب بايت عند تخزين قيمة UUID الثنائية.

الطول يعتمد على الترميز.يمكنك الحصول على الترميزات القياسية وطولها باستخدام هذا المقتطف:

public void Main() 
{
    var guid = Guid.Empty;
    Write(guid, "N"); // 32 characters
    Write(guid, "D"); // 36 characters (default)
    Write(guid, "B"); // 38 characters
    Write(guid, "P"); // 38 characters
    Write(guid, "X"); // 68 characters
}    

private void Write(Guid guid, string format) 
{
    var guidString = guid.ToString(format);
    Console.WriteLine("{0}: {1} ({2} characters)", format, guidString, guidString.Length);
}

انظر طريقة Guid.ToString للتفاصيل:

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