2017-03-10 74 views
1
工会

说我有在C++下面的代码:相当于C++中的Python

union { 
    int32_t i; 
    uint32_t ui; 
}; 

i = SomeFunc(); 
std::string test(std::to_string(ui)); 
std::ofstream outFile(test); 

并说我有i不知何故Python中的价值,我将如何能够获得该文件的名称是什么?

对于那些不熟悉C++的人。我在这里做的是将signed 32位整数格式的值写入i,然后将按位的表示方式解释为ui中的32位整数unsigned。我采用了相同的32位,并以两种不同的方式解释它们。

我该如何在Python中做到这一点?在Python中似乎没有任何明确的类型规范,那么如何以不同的方式重新解释一些位?

编辑:我使用Python 2.7.12

+0

Python是动态类型。所以变量没有附加到他们的类型。您通常可以定义方法,传达数据的特定语义解释。 –

+0

@WillemVanOnsem但它必须有一个基础的按位表示的数据(具有一定的宽度),对吧?那么你是说Python没有32位有符号/无符号整数,或者只是从解释程序的角度来看类型是不可知的? –

+0

在Python-3.x中,所有整数都具有任意大小。您可以使用二进制字符串,然后以您想要的方式解释该字符串。但afaik Python旨在尽可能地屏蔽底层表示。此外,例如内存管理(大部分)是未定义的:每个解释器都可以自由选择是否将对象推入堆栈或堆中。 –

回答

3

我会用python struct以不同的方式解释位。

类似下面的打印-12作为无符号整数

import struct 
p = struct.pack("@i", -12) 
print("{}".format(struct.unpack("@I",p)[0])) 
+0

这似乎对我很有用,非常感谢! –