7.1 struct 8212 ตีความไบต์เป็นข้อมูลไบนารีที่บรรจุโมดูลนี้จะแปลงระหว่างค่า Python และ C structs ที่แสดงเป็นอ็อบเจ็กต์ Python Bytes นี้สามารถใช้ในการจัดการข้อมูลไบนารีที่เก็บไว้ในไฟล์หรือจากการเชื่อมต่อเครือข่ายในแหล่งอื่น ๆ จะใช้รูปแบบสตริงเป็นคำอธิบายที่กะทัดรัดของเค้าโครงของโครงสร้าง C และแปลงที่ต้องการจากค่า Python โดยค่าเริ่มต้นผลลัพธ์ของการบรรจุ C struct ที่ระบุจะรวมไบต์ pad เพื่อรักษาตำแหน่งที่ถูกต้องสำหรับประเภท C ที่เกี่ยวข้องในทำนองเดียวกันการจัดตำแหน่งจะถูกนำเข้าบัญชีเมื่อกำลังนำออก ลักษณะการทำงานนี้ถูกเลือกเพื่อให้ไบต์ของ struct ที่บรรจุสอดคล้องกับเค้าโครงในหน่วยความจำของ C struct ที่สอดคล้องกัน หากต้องการจัดการรูปแบบข้อมูลที่ไม่ขึ้นกับแพลตฟอร์มหรือละเว้นไบต์ pad โดยนัยให้ใช้ขนาดมาตรฐานและการจัดแนวแทนที่จะใช้ขนาดและการจัดตำแหน่งแบบเดิม: ดูคำสั่งไบต์ขนาดและการปรับแนวเพื่อดูรายละเอียด ฟังก์ชัน struct หลาย (และวิธีการของ Struct) ใช้อาร์กิวเมนต์บัฟเฟอร์ นี้หมายถึงวัตถุที่ใช้โปรโตคอลบัฟเฟอร์และให้บัฟเฟอร์ที่สามารถอ่านได้หรืออ่านได้ ประเภทที่ใช้บ่อยที่สุดคือไบต์และ bytearray แต่หลายประเภทอื่น ๆ ที่สามารถดูได้เป็นอาร์เรย์ของไบต์ใช้โปรโตคอลบัฟเฟอร์เพื่อให้สามารถอ่านได้โดยไม่ต้องคัดลอกเพิ่มเติมจากไบต์ 7.1.1 ฟังก์ชันและข้อยกเว้นโมดูลกำหนดข้อยกเว้นและฟังก์ชันต่อไปนี้: exception struct ข้อผิดพลาดยกขึ้นในอาร์กิวเมนต์โอกาสต่างๆเป็นสตริงอธิบายสิ่งผิดปกติ ส่งคืนอ็อบเจ็กต์ไบต์ที่มีค่า v1 v2 บรรจุตามรูปแบบ fmt สตริง อาร์กิวเมนต์ต้องตรงกับค่าที่กำหนดโดยรูปแบบเดียวกัน ใส่ค่า v1 v2 ตามสตริงฟอร์แมตสตริงและเขียนไบต์ที่บรรจุเข้าไปในบัฟเฟอร์บัฟเฟอร์ที่เขียนได้เริ่มต้นที่ตำแหน่ง offset โปรดทราบว่า offset เป็นอาร์กิวเมนต์ที่ต้องการ ถอดปลั๊กออกจากบัฟเฟอร์บัฟเฟอร์ (สันนิษฐานว่าบรรจุโดย pack (fmt.)) ตามรูปแบบ fmt สตริง ผลที่ได้คือ tuple แม้ว่าจะมีอย่างน้อยหนึ่งรายการก็ตาม ขนาด buffer8217s ในไบต์ต้องตรงกับขนาดที่กำหนดโดยรูปแบบตามที่สะท้อนโดย calcsize () ถอดออกจากบัฟเฟอร์เริ่มต้นที่ตำแหน่ง offset ตามรูปแบบ fmt สตริง ผลที่ได้คือ tuple แม้ว่าจะมีอย่างน้อยหนึ่งรายการก็ตาม ขนาด buffer8217s เป็นไบต์หักลบ ต้องมีขนาดอย่างน้อยตามรูปแบบที่สะท้อนโดย calcsize () Iteratively unpack จากบัฟเฟอร์บัฟเฟอร์ตามรูปแบบ fmt สตริง ฟังก์ชันนี้จะส่งคืน Iterator ซึ่งจะอ่านชิ้นส่วนขนาดเท่ากันจากบัฟเฟอร์จนกว่าเนื้อหาทั้งหมดจะถูกนำมาใช้งาน ขนาด buffer8217s ในไบต์ต้องเป็นหลายขนาดตามรูปแบบที่สะท้อนโดย calcsize () การวนซ้ำแต่ละครั้งจะให้ tuple ตามที่ระบุโดยสตริงรูปแบบ ใหม่ในรุ่น 3.4 ส่งกลับขนาดของ struct (และจากไบต์วัตถุที่ผลิตโดย pack (fmt.)) ที่สอดคล้องกับรูปแบบสตริง fmt 7.1.2 สตริงการจัดรูปแบบสตริงการจัดรูปแบบสตริงเป็นกลไกที่ใช้เพื่อระบุเค้าโครงที่คาดไว้เมื่อบรรจุและแกะข้อมูล มีการสร้างขึ้นจากรูปแบบตัวอักษร ซึ่งระบุชนิดของข้อมูลที่ถูกบรรจุหีบห่อ นอกจากนี้ยังมีอักขระพิเศษสำหรับควบคุมลำดับไบต์ขนาดและการจัดแนว 7.1.2.1 ไบต์ลำดับขนาดและการจัดแนวตามค่าเริ่มต้นชนิด C จะแสดงในรูปแบบดั้งเดิมและคำสั่งไบต์ของ machine8217s และจัดตำแหน่งให้ถูกต้องโดยการข้ามไบต์แผ่นหากจำเป็น (ตามกฎที่ใช้โดยคอมไพเลอร์ C) หรืออีกตัวอักษรตัวแรกของสตริงรูปแบบสามารถใช้เพื่อระบุลำดับไบต์ขนาดและการจัดตำแหน่งของข้อมูลที่บรรจุตามตารางต่อไปนี้: ถ้าอักขระตัวแรกไม่ได้เป็นแบบใดแบบหนึ่งให้ใช้สันนิษฐาน 64 คำสั่งไบต์แบบมีขนาดใหญ่เป็น endian หรือ little-endian ขึ้นอยู่กับระบบโฮสต์ ตัวอย่างเช่น Intel x86 และ AMD64 (x86-64) มีรุ่นโมโตโรล่า 68000 และ PowerPC G5 เป็น ARM ขนาดใหญ่ของ Intel และ Intel Itanium ซึ่งมีคุณลักษณะ endianness แบบสลับ (bi-endian) ใช้ sys. byteorder เพื่อตรวจสอบ endianness ของระบบของคุณ ขนาดและการจัดตำแหน่งแบบดั้งเดิมกำหนดโดยใช้นิพจน์ sizeof C compiler8217s นี่เป็นคำสั่งไบต์เสมอ ขนาดมาตรฐานขึ้นอยู่กับอักขระรูปแบบเท่านั้นโปรดดูตารางในส่วนรูปแบบตัวอักษร สังเกตความแตกต่างระหว่าง 64 และ. ทั้งสองใช้ลำดับไบต์พื้นเมือง แต่ขนาดและการจัดตำแหน่งของหลังเป็นมาตรฐาน แบบฟอร์มสามารถใช้งานได้สำหรับคนยากจนเหล่านี้ที่อ้างว่าพวกเขาไม่สามารถจำได้ว่าคำสั่ง byte ของเครือข่ายเป็นแบบ endian หรือ endian เล็กน้อย ไม่มีวิธีใดที่จะบ่งบอกลำดับไบต์ที่ไม่ใช่เนทีฟ (force byte-swapping) ใช้ตัวเลือก lt หรือ gt ที่เหมาะสม แพ็ดดิ้งจะเพิ่มเฉพาะระหว่างสมาชิกโครงสร้างต่อเนื่องเท่านั้น ไม่มีการเพิ่มช่องว่างที่จุดเริ่มต้นหรือจุดสิ้นสุดของ struct ที่เข้ารหัส ไม่มีการเพิ่มช่องว่างเมื่อใช้ขนาดและการจัดตำแหน่งที่ไม่ใช่ภาษาท้องถิ่นเช่น กับ 8216lt8217, 8216gt8217, 82168217 และ 82168217 ในการจัดตำแหน่งสิ้นสุดของโครงสร้างให้ตรงกับความต้องการในการปรับตำแหน่งของชนิดใดชนิดหนึ่งให้วางรูปแบบด้วยรหัสสำหรับประเภทนั้นด้วยการนับซ้ำเป็นศูนย์ ดูตัวอย่าง 7.1.2.2 ตัวอักษรรูปแบบตัวอักษรรูปแบบมีความหมายดังต่อไปนี้การแปลงระหว่างค่า C และ Python ควรจะเห็นได้ชัดตามชนิด คอลัมน์ 8216 Standard size8217 หมายถึงขนาดของค่าที่บรรจุเป็นไบต์เมื่อใช้ขนาดมาตรฐานคือเมื่อสตริงรูปแบบเริ่มต้นด้วยหนึ่งใน lt gt หรือ . ขนาดของขนาดบรรจุจะขึ้นอยู่กับแพลตฟอร์ม เปลี่ยนในเวอร์ชัน 3.6: เพิ่มการสนับสนุนรูปแบบ e โค้ด Conversion ตรงกับประเภท Bool ที่กำหนดโดย C99 หากไม่มีประเภทนี้จะมีการจำลองโดยใช้ char ในโหมดมาตรฐานจะแสดงด้วยไบต์เดี่ยวเสมอ รหัสการแปลง q และ Q มีให้ใช้งานในโหมดเนทิฟเท่านั้นถ้าคอมไพเลอร์ C สนับสนุน C นาน หรือบน Windows, int64 พวกเขาอยู่เสมอในโหมดมาตรฐาน เมื่อพยายามที่จะแพ็คไม่ใช่จำนวนเต็มโดยใช้รหัสแปลงใด ๆ ที่เป็นจำนวนเต็มถ้าจำนวนที่ไม่ใช่จำนวนเต็มมีเมธอด index () วิธีนั้นจะถูกเรียกใช้เพื่อแปลงอาร์กิวเมนต์เป็นจำนวนเต็มก่อนบรรจุ เปลี่ยนเป็นเวอร์ชัน 3.2: การใช้เมธอด index () สำหรับเลขที่ไม่ใช่จำนวนเต็มใหม่ใน 3.2 รหัส Conversion n และ N มีให้สำหรับขนาดเนทีฟ (เลือกเป็นค่าเริ่มต้นหรือมีอักขระสั่งซื้อ 64 ไบต์) สำหรับขนาดมาตรฐานคุณสามารถใช้รูปแบบจำนวนเต็มอื่น ๆ ที่เหมาะกับแอปพลิเคชันของคุณได้ สำหรับ f. d และ e รหัสการแปลงแทนการใช้รูปแบบ binary32, binary64 หรือ binary16 ของ IEEE 754 (สำหรับ f. d หรือ e ตามลำดับ) โดยไม่คำนึงถึงรูปแบบ floating-point ที่แพลตฟอร์มใช้ อักขระรูปแบบ P จะใช้ได้เฉพาะสำหรับการสั่งซื้อไบต์เนทีฟ (เลือกเป็นค่าเริ่มต้นหรือด้วยอักขระการสั่งซื้อ 64 ไบต์) ตัวอักษรลำดับไบต์เลือกที่จะใช้การสั่งซื้อแบบไม่มากหรือแบบ big-endian ตามระบบโฮสต์ โมดูล struct ไม่ตีความว่าเป็นคำสั่งซื้อแบบเนทีฟดังนั้นรูปแบบ P จึงไม่สามารถใช้ได้ ชนิด binary16 8220half precision8221 ของ IEEE 754 ได้รับการแนะนำในการแก้ไขมาตรฐาน IEEE 754 ปี 2008 มีเครื่องหมายบิตเลขยกกำลัง 5 บิตและความแม่นยำ 11 บิต (มีการจัดเก็บอย่างน้อย 10 บิต) และสามารถแสดงตัวเลขระหว่างประมาณ 6.1e-05 และ 6.5e04 ได้อย่างแม่นยำเต็มรูปแบบ ประเภทนี้ไม่ได้รับการสนับสนุนอย่างกว้างขวางโดยคอมไพเลอร์ C: ในเครื่องทั่วไป, สั้น unsigned สามารถใช้สำหรับการจัดเก็บ แต่ไม่สำหรับการดำเนินงานทางคณิตศาสตร์ ดูหน้าวิกิพีเดียในรูปแบบ floating-point แบบกึ่งแม่นยำสำหรับข้อมูลเพิ่มเติม อักขระรูปแบบอาจถูกนำหน้าด้วยจำนวนการนับซ้ำทั้งหมด ตัวอย่างเช่นสตริงรูปแบบ 4h หมายถึงตรงกับ hhhh ตัวอักษร whitespace ระหว่างรูปแบบจะถูกละเว้นนับและรูปแบบจะต้องไม่มีช่องว่างแม้ว่า สำหรับอักขระรูปแบบ s นับนับเป็นความยาวไบต์ไม่ใช่การนับซ้ำสำหรับอักขระรูปแบบอื่นตัวอย่างเช่น 10 วินาทีหมายถึงสตริง 10 ไบต์เดี่ยวขณะที่ 10C หมายถึง 10 อักขระ ถ้านับไม่ได้เป็นค่าเริ่มต้นเป็น 1 สำหรับการบรรจุสายจะถูกตัดทอนหรือเบาะกับไบต์โมฆะตามความเหมาะสมเพื่อให้พอดี สำหรับการบีบอัดวัตถุไบต์ผลลัพธ์จะมีจำนวนไบต์ตามที่ระบุเสมอ ในกรณีพิเศษ 0s หมายถึงสตริงที่ว่างเปล่า (ขณะ 0c หมายถึง 0 ตัวอักษร) เมื่อบรรจุค่า x โดยใช้รูปแบบจำนวนเต็ม (b. h. H. i. I. l. L. q. Q) ถ้า x อยู่นอกช่วงที่ถูกต้องสำหรับรูปแบบนั้น struct. error จะยกขึ้น เปลี่ยนในเวอร์ชัน 3.1: ใน 3.0 รูปแบบจำนวนเต็มบางส่วนห่อค่าช่วงนอกช่วงและยกค่า DeprecationWarning แทน struct. error อักขระรูปแบบ p จะเข้ารหัสสตริง 8220Pascal 8221 ซึ่งหมายถึงสตริงที่มีความยาวขนาดสั้นซึ่งเก็บไว้ในจำนวนไบต์ที่กำหนดไว้ โดยนับ ไบต์แรกที่เก็บไว้คือความยาวของสตริงหรือ 255 อันใดที่เล็กกว่า ไบต์ของสตริงตาม ถ้าสตริงที่ส่งผ่านไปยัง pack () ยาวเกินไป (ยาวกว่าจำนวนที่ลบ 1) จะมีการจัดเก็บเฉพาะจำนวน count-1 bytes ของสตริงเท่านั้น ถ้าสตริงสั้นกว่า count-1 มันเบาะกับไบต์โมฆะเพื่อให้นับไบต์ในทั้งหมดจะใช้ โปรดทราบว่าสำหรับการแกะ () อักขระรูปแบบ p จะใช้จำนวนไบต์นับ แต่สตริงที่ส่งคืนจะต้องมีมากกว่า 255 ไบต์ สำหรับอักขระรูปแบบค่าที่ส่งคืนมีค่าเป็น True หรือ False เมื่อบรรจุค่าความจริงของอาร์กิวเมนต์วัตถุจะถูกใช้ ทั้ง 0 หรือ 1 ในการแทน bool หรือ bool มาตรฐานจะถูกบรรจุและค่าที่ไม่ใช่ศูนย์จะเป็น True เมื่อเปิดใช้งาน 7.1.2.3 ตัวอย่างตัวอย่างทั้งหมดสมมติลำดับไบต์พื้นเมืองขนาดและการจัดตำแหน่งด้วยเครื่อง big-endian รายชื่อที่เก็บถาวร 15 มิถุนายน 2011, 5:29 น. โพสต์ 1 จาก 11 (5509 ครั้ง) สวัสดีฉันเคยกำลังมองหา 2 วันสำหรับ วิธีการแปลงจำนวนเต็มเป็นเลขฐานสอง 0 เบาะไม่มีอะไร ฉันต้องได้รับหมายเลขที่แปลงด้วยจำนวนบิตที่กำหนดไว้ ตัวอย่างเช่นใน 8 บิต 2 00000010 ฉันเขียนต่อไปนี้: ltcodegt usrbinenv python def int2binPadded (จำนวนขนาด): วัตถุประสงค์ของฟังก์ชันนี้คือการแปลงจำนวนเต็มจำนวน binary 0 เบาะ ถ้าพิมพ์ (ตัวเลข) int หรือหมายเลข lt 0: เพิ่ม ValueError ควรเป็นจำนวนเต็มบวกถ้าพิมพ์ (ขนาด) int: เพิ่ม ValueError ควรเป็นจำนวนเต็มถ้าจำนวน gt (2size) -1: เพิ่ม ValueError จำนวนมากเกินไปแปลง (b) ขนาด: b (size-len (b)) 0b ถ้าชื่อ main: import sys พิมพ์ int2binPadded (int (sys. argv1), int (sys. argv1) argv2)) ltcodegt นี้ตอบสนองความต้องการของฉัน แม้ว่าคุณคิดอย่างไรเกี่ยวกับเรื่องนี้ ขอขอบคุณสำหรับความเห็นของคุณ Re: integer to binary 0-padded ตอบกลับ 15 มิ.ย. 2011, 5:33 โพสต์ 2 of 11 (5430 views) Am 15.06.2011 14:29, schrieb Olivier LEMAIRE: gt Hi there, Ive ถูกมองหา 2 วันสำหรับวิธีการแปลงจำนวนเต็ม gt ไป binary หมายเลข 0 เบาะไม่มีอะไร. ฉันต้องได้รับหมายเลขที่แปลง GT ด้วยจำนวนบิตที่กำหนดไว้ ตัวอย่างเช่นเมื่อวันที่ 8 บิต 2 00000010 Re: integer to binary 0-padded ในการตอบกลับไปที่ Jun 15, 2011, 5:48 AM โพสต์ 3 จาก 11 (5435 มุมมอง) เมื่อพ., 15 มิ.ย. 2011 เวลา 10:29 น. Olivier LEMAIRE ltm. olivier. lemairegmailgt wrote: gt b str (bin (number)) 2: gt if len (b) ขนาด: gt b (size-len (b)) 0b คุณไม่จำเป็นต้องใช้ str () มี bin () อยู่แล้ว ส่งกลับตัวเลข นี่เป็นการทำให้เข้าใจง่ายเล็กน้อย - แม้ว่าจะทำให้รหัสคลุมเครือมากขึ้น: หลังจากพิมพ์แล้วผมเห็นโพสต์ Daniels ซึ่งค่อนข้างดีกว่า ไปกับที่หนึ่งสำหรับศูนย์เติมระเบิดทั่วไปแม้ว่าคุณสามารถ pad กับโทเค็นอื่น ๆ Re: จำนวนเต็มเพื่อ binary 0 เบาะในการตอบกลับไป Jun 15, 2011, 5:54 AM โพสต์ที่ 4 จาก 11 (5428 views) Olivier LEMAIRE wrote: gt Ive ถูกมองหา 2 วันสำหรับวิธีการแปลงจำนวนเต็มเป็นจำนวนไบนารี gt 0 ไม่มีอะไร ฉันต้องได้รับหมายเลขที่แปลงด้วยจำนวนที่กำหนดไว้ของ gt ของบิต ตัวอย่างเช่นใน 8 บิต 2 00000010 ฉันเขียนข้อความต่อไปนี้: gt b str (bin (number)) 2: ผลลัพธ์ของ bin () เป็นสตริงแล้วไม่จำเป็นต้องใช้ str () gt ถ้า len (b) ขนาด: gt b (size-len (b)) 0b b. zfill (ขนาด) สามารถทำได้ gt คุณคิดอย่างไรเกี่ยวกับเรื่องนี้ นี่เป็นอีกวิธีหนึ่ง (ต้องใช้ Python 2.7): gtgtgt b. format (42, 10) 0000101010 Re: integer to binary 0-padded ตอบกลับเมื่อ 15 มิ.ย. 2011, 6:07 น. โพสต์ 5 จาก 11 (5431 ผู้เข้าชม) ขอบคุณ พวกคุณทุกคน. ดังนั้นในที่สุดฉันสามารถเขียนได้ ltcodegt usrbinenv python def int2binPadded (number, size): วัตถุประสงค์ของฟังก์ชันนี้คือการแปลงจำนวนเต็มเป็นเลขฐานสอง 0 ถ้าพิมพ์ (ตัวเลข) int หรือหมายเลข lt 0: เพิ่ม ValueError ควรเป็นจำนวนเต็มบวกถ้าพิมพ์ (ขนาด) int: เพิ่ม ValueError ควรเป็นจำนวนเต็มถ้าจำนวน gt (2size) -1: เพิ่ม ValueError จำนวนมากเกินไปแปลง int to bin Re: integer to binary 0-padded ในการตอบกลับไปที่ Jun 15, 2011, 6:13 AM โพสต์ที่ 6 จาก 11 (5440 มุมมอง) เมื่อวันที่ 06152011 07:33 น., Daniel Rentz ได้เขียน: gt Am 15.06.2011 14:29 สวัสดีฉันได้รับมองหา 2 วันสำหรับวิธีการแปลงจำนวนเต็ม gtgt จำนวนไบนารี 0 เบาะไม่มีอะไร. ฉันต้องได้รับหมายเลขที่แปลง gtgt ด้วยจำนวนบิตที่กำหนดไว้ ตัวอย่างเช่นใน 8 บิต 2 00000010 gt gt (2) 2:.zfill (8) เพียงเพื่อให้มีในเธรด (แม้ว่า OP ดูเหมือนจะใช้เวอร์ชัน 2.6 หรือสูงกว่า) ฟังก์ชัน bin () จะถูกเพิ่มเข้ามา 2.6 ซึ่งเป็นสิ่งที่ฉันต้องการได้รับกลับไปที่ 2.4 และ 2.5 เป็น Ive ติดอยู่เพียงพอเขียนโค้ดกับรุ่นเก่าของ Python มี (อีกครั้ง) เขียน bin () หลายครั้ง Ah well. mailing List Archive 15 มิถุนายน 2011, 5:29 น. โพสต์ 1 จาก 11 (5510 ผู้เข้าชม) สวัสดีฉันเคยมองหา 2 วันสำหรับวิธีการแปลงจำนวนเต็มเป็นเลขฐานสอง 0 เบาะไม่มีอะไร ฉันต้องได้รับหมายเลขที่แปลงด้วยจำนวนบิตที่กำหนดไว้ ตัวอย่างเช่นใน 8 บิต 2 00000010 ฉันเขียนต่อไปนี้: ltcodegt usrbinenv python def int2binPadded (จำนวนขนาด): วัตถุประสงค์ของฟังก์ชันนี้คือการแปลงจำนวนเต็มจำนวน binary 0 เบาะ ถ้าพิมพ์ (ตัวเลข) int หรือหมายเลข lt 0: เพิ่ม ValueError ควรเป็นจำนวนเต็มบวกถ้าพิมพ์ (ขนาด) int: เพิ่ม ValueError ควรเป็นจำนวนเต็มถ้าจำนวน gt (2size) -1: เพิ่ม ValueError จำนวนมากเกินไปแปลง (b) ขนาด: b (size-len (b)) 0b ถ้าชื่อ main: import sys พิมพ์ int2binPadded (int (sys. argv1), int (sys. argv1) argv2)) ltcodegt นี้ตอบสนองความต้องการของฉัน แม้ว่าคุณคิดอย่างไรเกี่ยวกับเรื่องนี้ ขอบคุณสำหรับคำพูดของคุณ Re: integer to binary 0-padded ตอบกลับ 15 มิ.ย. 2011, 5:33 โพสต์ 2 of 11 (5431 views) Am 15.06.2011 14:29, schrieb Olivier LEMAIRE: gt Hi there, Ive ถูกมองหา 2 วันสำหรับวิธีการแปลงจำนวนเต็ม gt ไป binary หมายเลข 0 เบาะไม่มีอะไร. ฉันต้องได้รับหมายเลขที่แปลง GT ด้วยจำนวนบิตที่กำหนดไว้ ตัวอย่างเช่นใน 8 บิต 2 00000010 Re: integer to binary 0-padded ในการตอบกลับไปที่ Jun 15, 2011, 5:48 AM โพสต์ 3 จาก 11 (5436 มุมมอง) เมื่อวันพุธที่ 15 มิถุนายน 2011 เวลา 10:29 น. Olivier LEMAIRE ltm. olivier. lemairegmailgt wrote: gt b str (bin (number)) 2: gt if len (b) ขนาด: gt b (size-len (b)) 0b คุณไม่จำเป็นต้องใช้ str () มี bin () อยู่แล้ว ส่งกลับตัวเลข นี่เป็นการทำให้เข้าใจง่ายเล็กน้อย - แม้ว่าจะทำให้รหัสคลุมเครือมากขึ้น: หลังจากพิมพ์แล้วผมเห็นโพสต์ Daniels ซึ่งค่อนข้างดีกว่า ไปกับที่หนึ่งสำหรับศูนย์เติมระเบิดทั่วไปแม้ว่าคุณสามารถ pad กับโทเค็นอื่น ๆ Re: จำนวนเต็มเพื่อ binary 0 เบาะตอบใน Jun 15, 2011, 5:54 AM โพสต์ที่ 4 จาก 11 (5429 views) Olivier LEMAIRE wrote: gt Ive ถูกมองหา 2 วันสำหรับวิธีการแปลงจำนวนเต็มเป็นจำนวนไบนารี gt 0 ไม่มีอะไร ฉันต้องได้รับหมายเลขที่แปลงด้วยจำนวนที่กำหนดไว้ของ gt ของบิต ตัวอย่างเช่นใน 8 บิต 2 00000010 ฉันเขียนข้อความต่อไปนี้: gt b str (bin (number)) 2: ผลลัพธ์ของ bin () เป็นสตริงแล้วไม่จำเป็นต้องใช้ str () gt ถ้า len (b) ขนาด: gt b (size-len (b)) 0b b. zfill (ขนาด) สามารถทำได้ gt คุณคิดอย่างไรเกี่ยวกับเรื่องนี้ นี่เป็นอีกวิธีหนึ่งที่ต้องใช้ Python 2.7: gtgtgt b. format (42, 10) 0000101010 Re: integer to binary 0-padded ตอบ: 15 มิ.ย. 2011, 6:07 AM โพสต์ 5 ของ 11 (5432 มุมมอง) ขอบคุณที่ พวกคุณทุกคน. ดังนั้นในที่สุดฉันสามารถเขียนได้ ltcodegt usrbinenv python def int2binPadded (number, size): วัตถุประสงค์ของฟังก์ชันนี้คือการแปลงจำนวนเต็มเป็นเลขฐานสอง 0 ถ้าพิมพ์ (ตัวเลข) int หรือหมายเลข lt 0: เพิ่ม ValueError ควรเป็นจำนวนเต็มบวกถ้าพิมพ์ (ขนาด) int: เพิ่ม ValueError ควรเป็นจำนวนเต็มถ้าจำนวน gt (2size) -1: เพิ่ม ValueError จำนวนมากเกินไปแปลง int to bin Re: integer to binary 0-padded ในการตอบกลับไปที่ Jun 15, 2011, 6:13 AM โพสต์ 6 จาก 11 (5441 ครั้ง) วันที่ 06152011 เวลา 07:33 น., Daniel Rentz เขียน: gt Am 15.06.2011 14:29 สวัสดีฉันได้รับมองหา 2 วันสำหรับวิธีการแปลงจำนวนเต็ม gtgt จำนวนไบนารี 0 เบาะไม่มีอะไร. ฉันต้องได้รับหมายเลขที่แปลง gtgt ด้วยจำนวนบิตที่กำหนดไว้ ตัวอย่างเช่นใน 8 บิต 2 00000010 gt gt (2) 2:.zfill (8) เพียงเพื่อให้มีในเธรด (แม้ว่า OP ดูเหมือนจะใช้เวอร์ชัน 2.6 หรือสูงกว่า) ฟังก์ชัน bin () จะถูกเพิ่มเข้ามา 2.6 ซึ่งเป็นสิ่งที่ฉันต้องการได้รับกลับไปที่ 2.4 และ 2.5 เป็น Ive ติดอยู่เพียงพอเขียนโค้ดกับรุ่นเก่าของ Python มี (อีกครั้ง) เขียน bin () หลายครั้ง อาดี
No comments:
Post a Comment