سؤال

كيف تعبر عن عدد صحيح كما عدد ثنائي مع بيثون حرفية?

كنت قادرة بسهولة على العثور على إجابة على عرافة:

>>> 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 هو الجواب الصحيح في جميع الحالات.

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