我試圖將char arry轉換爲字節(微軟類型,我正在使用visual studio)。事實是,我想填寫一個用於串口通信的DCB結構,並從.ini文件中取回信息。數據保存在char臨時緩衝區中。 DCB端口設置中的某些值需要以字節爲單位。我嘗試了很多方法,但沒有成功數據很好地從.ini中檢索,但我有一些問題將它們轉換爲字節。將char轉換爲字節C++
我可以將數值轉換爲整數,但它們也必須是字節。
而process-> read方法是GetPrivateProfileString的個人實現。
char res[10];
printf("\nReading port settings of %s\n", comName);
processFileConfig->read(comName, "baudrate", "9600", res, sizeof(res));
baudr = atoi(res);
processFileConfig->read(comName, "parity", "N", res, sizeof(res));
parity = (BYTE)res;
std::cout << "size of Parity : ";
std::cout << sizeof(parity) <<std::endl;
std::cout << "content of Parity : ";
std::cout << parity <<std::endl;
processFileConfig->read(comName, "byteSize", "8", res, sizeof(res));
byteSize = atoi(res);
std::cout << "biteSize : ";
std::cout << byteSize <<std::endl;
processFileConfig->read(comName, "stopBits", "1", res, sizeof(res));
stopBits = atoi(res);
std::cout << "stopBits : ";
std::cout << stopBits <<std::endl;
portSettings.DCBlength = sizeof(portSettings);
portSettings.BaudRate = baudr; //this one is OK
portSettings.ByteSize = byteSize; // returns
portSettings.Parity = parity; // returns nothing
portSettings.StopBits = stopBits; // returns a smiley :)
而且我file.ini
的例子:
[COM1]
baudrate=15000
byteSize=8
stopBits=1
parity=N
編輯:RES緩衝從在.ini返回良好的價值觀。這方面一切都很好。我只需要將最後三個值(byteSize,stopBits和parity)轉換爲無符號long。
你是什麼意思的「有些問題」,你必須具體。簡單谷歌上的「WinAPI字節」指向[MSND](http://msdn.microsoft.com/en-us/library/windows/desktop/aa383751(v = vs.85).aspx)其中指出*「BYTE - 一個字節(8位),這種類型在WinDef.h中聲明如下:typedef unsigned char BYTE;「*。我甚至不確定你會得到什麼問題。 – luk32
「某些問題」:好吧,我無法將其轉換:p我也觀看了msdn字節,並且沒有被忽略。我試圖將返回的緩衝區(res)轉換爲無符號長緩衝區。 –
@Mr。看起來你好像根本不知道什麼是錯的。你有種不能得到幫助。我很想說:「你可以,你只需要相信自己。」但相反,一個專業的「請發佈錯誤信息,或預期的和實際的輸出,最好有一個工作sscce。」 – luk32