문제

Python의 유니코드 문자열을 unsigned 및 signed int 8비트, unsigned 및 signed int 16비트, unsigned 및 signed int 32비트, unsigned 및 signed int 64비트, double, float, string, unsigned 및 signed와 같은 다른 유형으로 변환해야 합니다. 8비트, 무부호 및 부호 있는 16비트, 무부호 및 부호 있는 32비트, 무부호 및 부호 있는 64비트.

여러분의 도움이 필요합니다.

도움이 되었습니까?

해결책

사용 int() 문자열을 정수로 변환합니다.Python에는 다양한 고정 너비 정수가 없으므로 한 가지 유형만 얻을 수 있습니다.

그런 다음 사용 struct 정수를 고정 너비로 ​​압축하려면 다음을 수행하십시오.

res = struct.pack("=B",i) ## uint8_t
res = struct.pack("=b",i) ## int8_t

res = struct.pack("=H",i) ## uint16_t
res = struct.pack("=h",i) ## int16_t

res = struct.pack("=I",i) ## uint32_t
res = struct.pack("=i",i) ## int32_t

res = struct.pack("=Q",i) ## uint64_t
res = struct.pack("=q",i) ## int64_t

res = struct.pack("=f",i) ## float
res = struct.pack("=d",i) ## double

struct 이진수를 포함하는 바이트 문자열을 생성합니다.

편집하다:주석을 보면 문자열(십진수)을 정수로 변환하려는 것처럼 들립니다.그냥 사용 int() 그러나 이를 위해 지정된 유형의 복잡한 오버플로/언더플로 의미를 모두 얻을 수는 없습니다.적어도 많은 코드를 작성하지 않고는 파이썬에서 이를 재현할 수 없습니다.

더 많은 도움을 원한다면 달성하려는 것이 무엇인지 더 정확하게 설명해야 할 것 같습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top