我想C++/Arduino:如何將字符串/字符數組轉換爲字節?
char lineOneC[8] = {0,1,1,0,0,0,0,1};
轉換成
byte lineOneB = B01100001;
如何在C++/Arduino的做到這一點?
我想C++/Arduino:如何將字符串/字符數組轉換爲字節?
char lineOneC[8] = {0,1,1,0,0,0,0,1};
轉換成
byte lineOneB = B01100001;
如何在C++/Arduino的做到這一點?
我不知道有關的Adruino平臺, 強加具體的限制,但這應該在任何標準的編譯器工作。
char GetBitArrayAsByte(const char inputArray[8])
{
char result = 0;
for (int idx = 0; idx < 8; ++idx)
{
result |= (inputArray[7-idx] << idx);
}
return result;
}
char lineOneC[8] = { 0, 1, 1, 0, 0, 0, 0, 1 };
unsigned char b = 0;
for (int i = 7; i >= 0; i--) {
b |= lineOneC[i] << (7 - i);
}
只需將0或1移位到二進制格式的位置即可。像這樣
char lineOneC[8] = {0,1,1,0,0,0,0,1};
char lineOneB = 0;
for(int i=0; i<8;i++)
{
lineOneB |= lineOneC[i] << (7-i);
}
+1爲正確答案:) – 2010-12-06 19:15:35
如果你知道你的字符數組的值將始終是1或0:
char line[8] = { '0', '1', '1', '0', '0', '0', '0', '1'};
unsigned char linebyte = 0;
for (int i = 7, j = 0; j < 8; --i, ++j)
{
if (line[j] == '1')
{
linebyte |= (1 << i);
}
}
如果結果應該是B01100001
,那麼字節0是MSB(最顯著位),不是字節7 ...
char line[8] = { 0, 1, 1, 0, 0, 0, 0, 1 };
unsigned char b = 0;
for (int ii = 0; ii < 8; ii++)
{
b <<= 1;
b |= line[ii];
}
我見過其他的答案,如果我正確地閱讀它們,把MSB的字節7
編輯:固定的報價;之前錯過了它。
你真的嘗試過代碼嗎?這個答案不起作用,因爲你引用了數字('0'不等於0)。子索引7是C和C派生語言列表中的第8項,因爲數組從元素0開始,而不是元素1開始。 – 2010-12-07 00:49:17
感謝您的「鍵盤」鏈接! +1 – detunized 2010-12-06 19:15:42