2024-09-28 22:07:42 发布
网友
我正在尝试转换,例如: 6.09677e-321->;1234 在c语言中,您可以执行如下操作:printf("%lld", 6.09677e-321) 有没有关于如何在python中进行这种转换的想法
printf("%lld", 6.09677e-321)
我试过使用ctypes,d=c_float(6.09677e-321);cast(f, c_longlong)但没有得到多少好处
d=c_float(6.09677e-321);cast(f, c_longlong)
Python int和float类型不同于原始C数字类型。它们是成熟的对象。Python对象实际上没有这种意义上的“强制转换”。但是,您可以使用ctypes实现这一点,它本质上提供了对基本C类型的面向对象包装。但这将有点复杂:
int
float
ctypes
import ctypes py_float = 6.097e-321 cf = ctypes.c_double(py_float) lp = ctypes.cast(ctypes.pointer(cf), ctypes.POINTER(ctypes.c_int64)) py_int = lp.contents.value print(py_int) # 1234
您还可以使用struct module进行以下操作:
>>> import struct # treat the value as a double >>> packed = struct.pack("d", 6.097e-321) >>> packed '\xd2\x04\x00\x00\x00\x00\x00\x00' # ...but unpack it as a long int >>> unpacked = struct.unpack("l", packed) >>> unpacked[0] 1234
Python
int
和float
类型不同于原始C数字类型。它们是成熟的对象。Python对象实际上没有这种意义上的“强制转换”。但是,您可以使用ctypes
实现这一点,它本质上提供了对基本C类型的面向对象包装。但这将有点复杂:您还可以使用struct module进行以下操作:
相关问题 更多 >
编程相关推荐