2014-02-14 83 views
0

我需要儘可能快地將多個char值轉換爲相應ASCII字符的字符串。這是一個玩具的例子。我想從python環境中調用H()函數來返回str'aaa'。Cython:將char值轉換爲字符串的最快方法

from libcpp.string cimport string 

cdef string G(): 
    return chr(97) 

def H(): 
    cdef string s 
    s.append(G()) 
    s.append(G()) 
    s.append(G()) 

    return s 

我相信,這不是最佳的方案中,因爲它使用Python函數ORD(),其盒97到蟒對象,然後返回焦炭,箱到另一個蟒對象STR並最終將其轉換成C++字符串。我怎樣才能更快地完成轉換?

+0

你試過'3 *「a」',或者更好的只是「aaa」 –

+0

這是一個玩具的例子。我需要將任意字節值轉換爲相應的ASCII字符並將它們連接在一個字符串中。 – Apogentus

回答

0

找到了!

<string>chr(i) 

可以通過

string(1, <char>i) 

更換這裏是新變種的例子:

cdef string G(): 
    return string(1,<char>97) 


def H(): 
    cdef string s 
    s.append(G()) 
    s.append(G()) 
    s.append(G()) 
    return s 

新變種工作快2倍。