→ mingtai1:突然發現原文azureblaze大的方法比較快,這個看看就好 哈 12/07 00:25
※ 編輯: mingtai1 來自: 119.77.223.81 (12/07 00:26)
如果只是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)