تقنية

uuid5 في بايثون: هل يغير تمرير الاسم ببايتات UTF-8 القيمة؟

UUID(int=0); U+00E9 vs c3a9; own==encoded: True.
بايتات النص نفسها.

uuid5 ترمّز الاسم النصي باستخدام UTF-8؛ تمرير بايتاته نفسها لا يغير قيمة الناتج. [1] [2]

الخلاصة السريعة

لا، في هذا الزوج المتكافئ. [1] [2]

  • uuid5 ترمّز الاسم النصي باستخدام UTF-8؛ تمرير بايتاته نفسها لا يغير قيمة الناتج. [1] [2]
  • على CPython 3.12.14، namespace=UUID(int=0) ثابت؛ name="\u00e9" نص، وبيانات UTF-8 له هي c3a9 بالصيغة السداسية. [1] [2]
  • own من النص وencoded من البايتين؛ own==encoded تعطي True. المقارنة للقيم. [1] [2]
  • تحكم: control من البايت e9 وحده، بالنطاق نفسه؛ own==control تعطي False في هذا الزوج. [1] [2]
  • إصدار النتائج الثلاث 5. نختبر تحويل الاسم، دون تطبيع أو عشوائية أو ضمان تفرد. [1] [2]

الترميز قبل الحساب

uuid5 ترمّز الاسم النصي باستخدام UTF-8؛ تمرير بايتاته نفسها لا يغير قيمة الناتج. [1] [2]

اسم وبايتاه

على CPython 3.12.14، namespace=UUID(int=0) ثابت؛ name="\u00e9" نص، وبيانات UTF-8 له هي c3a9 بالصيغة السداسية. [1] [2]

قيمتان متساويتان

own من النص وencoded من البايتين؛ own==encoded تعطي True. المقارنة للقيم. [1] [2]

from uuid import UUID,uuid5 namespace=UUID(int=0) name="\u00e9" own=uuid5(namespace,name) encoded=uuid5(namespace,b"\xc3\xa9") print(own==encoded) [1] [2]

UUID(int=0); U+00E9 vs e9; own==control: False.
بايتات أخرى هنا.

تغيير البايتات

تحكم: control من البايت e9 وحده، بالنطاق نفسه؛ own==control تعطي False في هذا الزوج. [1] [2]

control=uuid5(namespace,b"\xe9") print(own==control) print(own.version,encoded.version,control.version) [1] [2]

إصدار النتائج الثلاث 5. نختبر تحويل الاسم، دون تطبيع أو عشوائية أو ضمان تفرد. [1] [2]

المراجع

  1. Python uuid5 and UUID
  2. CPython 3.12.14 uuid5

للتوسع: لغات البرمجة.

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