[Halcon] 字串、字元 <-> HTuple

若有需要將平時寫程式常會用到的字串、字元轉換為Tuple用到Halcon的運算元時,該如何轉換呢?欲知字串、字元 V.S. Halcon Tuple的轉換詳情...請仔細看一下去...

HTuple -> char*:
HTuple DecodedDataStrings,Ords;
HTuple len=0;
char c[500];
//假設DecodedDataStrings中取得了字串型別的HTuple
//要如何將HTuple轉換一般可用的為char指標?
//1. 將字串HTuple轉換為ASCII的HTuple
tuple_ords(DecodedDataStrings, &Ords);
 
//由於一個ASCII代表一個字元, 所以此刻可以用tuple_length取得目前字元陣列的長度
tuple_length(Ords, &len);
 
//2. 有值時, 則可以將資料轉換為char指標
if(len > 0) {
    tuple_chrt(Ords, (char *)c);
    //將Ords(ASCII字元HTuple)轉為char指標c 
    //亦可將其再轉換為String^ s=%String(c);
}

char* –> HTuple

char c[500];            //ASCII字元 (1 Byte)
wchar_t wc[500];        //UNICODE寬字元 (2 Byte)
//假設一字元指標或字元陣列想將其值輸入到HTuple中
//要如何將字元指標或陣列轉換其Halcon運算元可用的HTuple呢?
//1. 將字串指標傳入HTuple即可
HTuple((char*)&c[0]);
//也等同於HTuple((char*)c);
//當字元指標屬於char或unsigned char時可直接轉換至ASCII HTuple

wchar_t* –> HTuple

HTuple t, Ords;
char wcc[500];
//若字元指標屬於寬字元的指標(wchar_t)時就要注意會產生exception.
//所以試了一下, 繞點路, 才可以轉換成功.
for(int aa=0; aa<wc的長度;aa++) {
    t.Append(wc[aa]);
    //將寬字元一個一個放到HTuple t裡頭
}
//將UNICODE的HTuple變成ASCII的HTuple
tuple_ords(t, &Ords);
//有了ASCII的HTuple就可用tuple_chrt轉換成char指標了.
tuple_chrt(Ords, (char*)&wcc[0]);
//在將wcc指標放到HTuple中就轉換好囉.
HTuple((char*) wcc);


以上,做為筆記。

這個網誌中的熱門文章

[Tips] 設定桌面文字顏色

登入失敗: 使用者帳戶限制。可能原因為不允許空的密碼,登入時數限制,或強制的原則限制

[Win7] 電腦管理-損毀傾印