\'bytes(n)\'이 \'n\'의 이진 형식을 나타내지 않는 이유는 무엇입니까?

Linda Hamilton
풀어 주다: 2024-10-20 14:54:02
원래의
613명이 탐색했습니다.

Why Doesn't

"bytes(n)"이 바이너리를 나타내지 않는 이유는 무엇입니까?

Python 3의 "bytes(n)" 함수는 길이가 'n'인 바이트 문자열을 생성합니다. '는 정수 'n'을 이진 표현으로 변환하는 대신 null 바이트로 채워집니다. 이 예상치 못한 동작은 Python 3.2에 도입된 변경 사항에 뿌리를 두고 있습니다.

'to_bytes' 메서드

정수를 이진 표현으로 변환하려면 다음에서 도입된 'to_bytes' 메서드를 사용할 수 있습니다. 파이썬 3.2. 다음 예에서는 그 사용법을 보여줍니다.

<code class="python">>>> (1024).to_bytes(2, byteorder='big')
b'\x04\x00'</code>
로그인 후 복사

또는 정수에서 바이트로의 변환을 처리하는 자체 함수를 구현할 수도 있습니다.

<code class="python">def int_to_bytes(x: int) -> bytes:
    return x.to_bytes((x.bit_length() + 7) // 8, 'big')

def int_from_bytes(xbytes: bytes) -> int:
    return int.from_bytes(xbytes, 'big')</code>
로그인 후 복사

부호 있는 정수

'to_bytes' 메소드는 부호 없는 정수 변환만 지원합니다. 부호 있는 정수의 경우 비트 길이 계산이 더 복잡합니다.

<code class="python">def int_to_bytes(number: int) -> bytes:
    return number.to_bytes(length=(8 + (number + (number < 0)).bit_length()) // 8, byteorder='big', signed=True)

def int_from_bytes(binary_data: bytes) -> Optional[int]:
    return int.from_bytes(binary_data, byteorder='big', signed=True)</code>
로그인 후 복사

위 내용은 \'bytes(n)\'이 \'n\'의 이진 형식을 나타내지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!