看板 C_and_CPP 關於我們 聯絡資訊
如果只是host接收端必須是5 byte 那你儲存在client的資料不一定是要5 bytes也可以做到 Ex. 送出"5258010100"這串資料: std::string a = "5258010100"; unsigned char buffer[5] ={0}; for(int i=0;i<5;++i) { char d1 = a.at(i*2)-48; //單一byte十位數, -48是ASCII code轉成Decimal char d2 = a.at(i*2+1)-48;// 單一byte個位數 buffer[i] = (d1 << 4) | d2 ; // buffer[0] = 0x52,buffer[1] = 0x58.. } // ... send buffer to host ※ 引述《mingtai1 (綠豆嘉義人)》之銘言: : 不是很清楚你的問題定義 : 你的問題是command跟data都由使用者輸入,共5byte可以分配給command+data, : 且必須一次傳輸不能分兩次嗎 ? : 如果是像上述說的 : 要先定義你的command會有幾個 : 假設用1 byte當Command, 你可以有256種Command : 還有4個byte,可以傳值域在0~0xFFFFFFFF的data : 假如你要用2 byte當Command, 則data只剩下3 bytes, 值域在0~0xFFFFFF...依此類推 : ※ 引述《ansonguy (HaHaHa~~~)》之銘言: : : 如題,最近實驗碰到的問題,但是又有byte數的限制 : : 例如,它規定輸入的command數為5bytes,16進位 : : 指令類似於5258010100,其中 : : 52 58 01 01 00,兩個數字為1byte,這樣要怎麼定義? : : char[5]="5258010100"---->char[5]不夠裝啊 : : char* str="5258010100"---->沒辦法確定command是5bytes啊, : : 因為整個字串是command+data : : 其它用int,string等等,都沒辦法保證5bytes吧? : : 請問我該怎麼宣告這個字串變數呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 119.77.223.81 ※ 編輯: mingtai1 來自: 119.77.223.81 (12/07 00:22)
mingtai1:突然發現原文azureblaze大的方法比較快,這個看看就好 哈 12/07 00:25
※ 編輯: mingtai1 來自: 119.77.223.81 (12/07 00:26)