نظام تشفير يقوم بتعيين نفس عدد البتات لكل حرف
-
29-09-2020 - |
سؤال
أحاول الحصول على سلسلة ثنائية تم تحويلها من نص ملف نصي، وأنا قادر على الحصول على ذلك ولكن المشكلة هي أنني أحتاج إلى تمثيل كل حرف بنفس عدد البتات، ولكن هذا ليس ما أحصل عليه (يرجى الاطلاع على كود بايثون أدناه والإخراج المقابل).على سبيل المثال، الشخصية i
يمثلها 1101001
, ، وهو 7 بتات طويلة، ولكن الشخصية !
يمثلها 100001
, ، وهو 6 بت طويلة.
هل يوجد أي نظام تشفير/فك تشفير حيث يأخذ كل حرف نفس القدر من البتات؟
content = open('a.txt', 'r').read()
test_str = content
# using join() + ord() + format() ... Converting String to binary
Binary = ' '.join(format(ord(i), 'b') for i in test_str)
#Decimal=int(Binary, 2)
# printing original string
print("The original string is : " + str(test_str))
# printing result
print("The string after Binary conversion : \n" + str(Binary))
انتاج:
The original string is : Hi! Is there a solution?
The string after Binary conversion :
1001000 1101001 100001 100000 1001001 1110011 100000 1110100 1101000 1100101 1110010 1100101 100000 1100001 100000 1110011 1101111 1101100 1110101 1110100 1101001 1101111 1101110 111111
المحلول
الطريقة المعتادة لحل هذه المشكلة هي إضافة أصفار بادئة.لذا i
سيظل يمثله 1101001
, ، بينما !
سيتم تمثيله بواسطة 0100001
.
يشبه هذا الطريقة التي قد تستخدم بها ساعتك الرقمية 06:40 لـ 6:40 أو 12:05 لـ 12:5.
لا تنتمي إلى cs.stackexchange