2011-08-22 81 views
0

我正在構建一個應用程序來讀取和寫入微芯片的內存。CString寫爲一個無符號字符

我需要通過具有4個固定的字節和2個可變字節,因此suposing我想讀存儲器組0004無符號的字符陣列I將通過

unsigned char sRequest[32]={0}; 
sRequest[0] = 0x02; //FIXED 
sRequest[1] = 0x1F; //FIXED 
sRequest[2] = 0x0A; //FIXED 
sRequest[3] = 0x20; //FIXED 
sRequest[4] = 0x00; //VARIABLE 
sRequest[5] = 0x04; //VARIABLE 

我想把2個CEdit的盒的用戶輸入該變量存儲體,所以它會在第一個CEdit上寫0x00,在第二個上寫0x04。

所以我的問題是,如何將這些輸入中的每一個都轉換爲無符號字符,以便我可以將其設置在我的sRequest變量上?

在此先感謝 (感謝戴夫,輸入錯誤字節爲位,現在固定)

+0

你是指位或字節?該數組有32個固定位和16個變量。 – Dave

回答

0

其實,我也不會做,與自由格式的文本輸入的話 - 這將是太多的打擾做驗證(本質上是懶惰)。如果有機會盡可能早的限制你的用戶能夠給你的東西,你應該採取:-)

我會提供值的下拉框,每個nybble,以便從中選擇數量並不太繁重。喜歡的東西(與道歉我的圖形技能):

   +---+-+ +---+-+ +---+-+ +---+-+ 
Enter value 0x | 0 |V| | 0 |V| | 0 |V| | 4 |V| 
       +---+-+ +---+-+ +---+-+ +---+-+ 
       |>0<| 
       | 1 | 
       | 1 | 
       | 2 | 
       | 3 | 
       : : : 
       | E | 
       | F | 
       +---+ 

對於在列表框中的值,我將設置項數據爲0至15包容性(對於項目0通過F)。

這樣的話,你可以得到一個單字節值的東西,如:

byte04 = listboxA.GetItemData(listboxA.GetCurSel()) * 16 + 
     listboxB.GetItemData(listboxB.GetCurSel()); 

byte05 = listboxC.GetItemData(listboxC.GetCurSel()) * 16 + 
     listboxD.GetItemData(listboxD.GetCurSel()); 

如果必須使用限制較少的輸入法,C++規定:

int stoi (const string& str, size_t *idx = 0, int base = 10); 

(對於已簽名和未簽名的long,則爲stol/stoul),以允許您將C++字符串轉換爲整型。

爲您的目的。您可能需要檢測並去掉前導0x(以及可能的前導/尾隨空格等等),這就是爲什麼我建議限制性路線作爲更好的選擇。

+0

你的圖形技能足夠好=)謝謝你的回答,但即使我這樣做了,我怎麼能得到這些值翻譯成一個字符(實際上是兩個)?我不關心用戶輸入,因爲這只是我的工程師測試他的芯片,因此他會知道該寫什麼。 – Mateus

+0

@Mateus,我在這裏添加了一小段內容,將單個CListBox項目轉換爲可用的字節值。 – paxdiablo

相關問題