سؤال

أحاول الحصول على سلسلة ثنائية تم تحويلها من نص ملف نصي، وأنا قادر على الحصول على ذلك ولكن المشكلة هي أنني أحتاج إلى تمثيل كل حرف بنفس عدد البتات، ولكن هذا ليس ما أحصل عليه (يرجى الاطلاع على كود بايثون أدناه والإخراج المقابل).على سبيل المثال، الشخصية 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.

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