كيف يمكنك التعبير عن الثنائية حرفية في الثعبان ؟
سؤال
كيف تعبر عن عدد صحيح كما عدد ثنائي مع بيثون حرفية?
كنت قادرة بسهولة على العثور على إجابة على عرافة:
>>> 0x12AF
4783
>>> 0x100
256
و ثماني:
>>> 01267
695
>>> 0100
64
كيف يمكنك استخدام حرفية للتعبير عن الثنائية في الثعبان ؟
ملخص إجابات
- بايثون 2.5 في وقت سابق:يمكن التعبير عن الثنائية باستخدام
int('01010101111',2)
ولكن ليس مع حرفية. - بايثون 2.5 في وقت سابق:هناك مستحيل للتعبير عن الثنائية حرفية.
- بيثون 2.6 بيتا:يمكنك أن تفعل مثل ذلك:
0b1100111
أو0B1100111
. - بيثون 2.6 بيتا:وسوف تسمح أيضا
0o27
أو0O27
(الحرف الثاني هو حرف س) تمثل ثماني. - بيثون 3.0 بيتا:نفس 2.6, ولكن لن تسمح السن
027
بناء الجملة من أجل octals.
المحلول
للاشارة—المستقبل بيثون احتمالات:
بدءا من بيثون 2.6 يمكنك التعبير عن الثنائية حرفية باستخدام البادئة 0b أو 0B:
>>> 0b101111
47
يمكنك أيضا استخدام جديدة بن وظيفة للحصول على تمثيل ثنائي عدد:
>>> bin(173)
'0b10101101'
تطوير نسخة من الوثائق: ما هو الجديد في بيثون 2.6
نصائح أخرى
>>> print int('01010101111',2)
687
>>> print int('11111111',2)
255
طريقة أخرى.
كيف يمكنك التعبير عن الثنائية حرفية في الثعبان ؟
انهم ليسوا "الثنائية" حرفية ، بل "صحيح حرفية".يمكنك التعبير عن صحيح حرفية مع تنسيق ثنائي مع 0
تليها B
أو b
تليها سلسلة من الأصفار ومنها على سبيل المثال:
>>> 0b0010101010
170
>>> 0B010101
21
من بيثون 3 مستندات, هذه هي الطرق توفير عدد صحيح حرفية في بايثون:
صحيح حرفية وصفها التالية التعاريف المعجمية:
integer ::= decinteger | bininteger | octinteger | hexinteger decinteger ::= nonzerodigit (["_"] digit)* | "0"+ (["_"] "0")* bininteger ::= "0" ("b" | "B") (["_"] bindigit)+ octinteger ::= "0" ("o" | "O") (["_"] octdigit)+ hexinteger ::= "0" ("x" | "X") (["_"] hexdigit)+ nonzerodigit ::= "1"..."9" digit ::= "0"..."9" bindigit ::= "0" | "1" octdigit ::= "0"..."7" hexdigit ::= digit | "a"..."f" | "A"..."F"
لا يوجد حد لطول صحيح حرفية وبصرف النظر عن ما يمكن تخزينها في الذاكرة المتاحة.
علما أن الأصفار البادئة في غير الصفر عدد عشري غير مسموح بها.هذا هو توضيح مع ج-أسلوب ثماني حرفية ، بيثون تستخدم من قبل الإصدار 3.0.
بعض الأمثلة من صحيح حرفية:
7 2147483647 0o177 0b100110111 3 79228162514264337593543950336 0o377 0xdeadbeef 100_000_000_000 0b_1110_0101
تغير في الإصدار 3.6: يؤكد الآن يسمح تجميع الأغراض في حرفية.
طرق أخرى للتعبير عن الثنائية:
هل يمكن أن يكون الأصفار ومنها في سلسلة كائن التي يمكن التلاعب بها (على الرغم من أن عليك أن تفعل جميع العمليات على عدد صحيح في معظم الحالات) - يمر الباحث سلسلة من الأصفار و الآحاد و القاعدة تقوم بتحويله من (2):
>>> int('010101', 2)
21
يمكنك اختياريا لديك 0b
أو 0B
بادئة:
>>> int('0b0010101010', 2)
170
إذا كنت تمر عليه 0
كقاعدة, وسوف نفترض قاعدة 10 إذا كانت السلسلة لا يحدد مع بادئة:
>>> int('10101', 0)
10101
>>> int('0b10101', 0)
21
تحويل من الباحث إلى الإنسان للقراءة الثنائية:
يمكنك تمرير عدد صحيح إلى بن لرؤية سلسلة تمثيل ثنائي الحرفي:
>>> bin(21)
'0b10101'
و يمكنك الجمع بين bin
و int
للذهاب ذهابا وإيابا:
>>> bin(int('010101', 2))
'0b10101'
يمكنك استخدام تنسيق مواصفات كذلك, إذا كنت تريد أن يكون الحد الأدنى العرض مع السابقة الأصفار:
>>> format(int('010101', 2), '{fill}{width}b'.format(width=10, fill=0))
'0000010101'
>>> format(int('010101', 2), '010b')
'0000010101'
0 في البداية هنا ينص على أن القاعدة 8 (لا 10), والتي من السهل جدا أن نرى:
>>> int('010101', 0)
4161
إذا كنت لا تبدأ مع 0 ، ثم بيثون يفترض العدد هو الأساس 10.
>>> int('10101', 0)
10101
بقدر ما أستطيع أن أقول بيثون خلال 2.5 فقط يدعم الست عشري & ثماني حرفية.لم أجد بعض المناقشات حول إضافة الثنائية إلى الإصدارات المستقبلية ولكن لا شيء مؤكد.
أنا متأكد من أن هذا هو واحد من الأشياء بسبب تغيير في بيثون 3.0 ربما مع بن() للذهاب مع عرافة() وأكتوبر().
تحرير:lbrandy هو الجواب الصحيح في جميع الحالات.