2016-02-05 50 views
1

我使用python解析某些ASCII文本的最小值和最大值: UI8,SI32,等...retrive這回我像串的CTYPE

基於這些我需要計算類型的最大值串並用以下字符串替換它們: 無符號字符,有符號長等等...

我在python ctypes lib中找到,但我無法找到如何獲得最大\最小值。

Python中是否有與C++中的std::numeric_limits等價的東西?

+0

你可以嘗試從C++ numeric_limits MIN(),MAX()。 – Karthikeyan

+0

在ctype上是'sizeof'你在找什麼? –

+1

你可以從[這個答案](http://stackoverflow.com/a/31340336/4014959)得到一個包含整數'ctypes'的邊界信息的元組。 –

回答

2

有多少這樣的字符串?這可能是最快的手自己定義它們:

class MaxVal: 
    SI8 = 2 ** 7 - 1 
    UI8 = 2 ** 8 - 1 
    SI16 = 2 ** 15 - 1 
    UI16 = 2 ** 16 - 1 
    SI32 = 2 ** 31 - 1 
    UI32 = 2 ** 32 - 1 
    SI64 = 2 ** 63 - 1 
    UI64 = 2 ** 64 - 1 

或者你可以把它們放在一個dict。我把它們放在一個class的靜態屬性,因爲它是關於你提到他們的方式,「感覺像」 enum常量讓最巧妙的方法:

print(MaxVal.UI32) 

更多編程,如果你的字符串類型是可變的,你可以使用這樣的:

dt = 'UI32' 
print(getattr(MaxVal, dt)) 

相應MinVal定義作爲練習留給讀者..