Robofun 機器人論壇

 找回密碼
 申請會員
搜索
熱搜: 活動 交友 discuz
查看: 2417|回復: 4
打印 上一主題 下一主題

請問如何修正DecToBin函式?

[複製鏈接]
跳轉到指定樓層
1#
發表於 2013-4-27 00:17:35 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
這裡的DecToBin函式傳回值是 10011,正確應該傳回 1101 才對,
請問該如何修正?


  1. byte DecToBin(byte val)
  2. {
  3.   return ( (val/10*16) + (val%10) );
  4. }

  5. byte BinToDec(byte val)
  6. {
  7.   return ( (val/16*10) + (val%16) );
  8. }
  9. void setup() {
  10.   Serial.begin(9600);
  11.   byte i = DecToBin(13);
  12.   Serial.println(i, BIN);  // return 10011
  13.   i = BinToDec(B1101);
  14.   Serial.println(i);  // return 13
  15. }

  16. void loop() {}
複製代碼
2#
發表於 2013-4-27 17:00:34 | 只看該作者
這兩行:

  1. byte i = DecToBin(13);
  2. Serial.println(i, BIN);  // return 10011
複製代碼

為什麼不這樣寫就好?

byte i = 13;
Serial.println(i, BIN);


另外, DecToBin 也不對,因為 DecToBin(13) 得到的結果是  (13/10*16) + (13%10)  = 19
3#
發表於 2013-4-29 20:50:59 | 只看該作者
回復 1# pizg


    return ( (val/10*16) + (val%10) );改為

return ( (val/10*16) - (val%10) );
4#
 樓主| 發表於 2013-4-29 23:05:49 | 只看該作者
本帖最後由 pizg 於 2013-4-30 00:07 編輯

感謝 coopermaa 和 vegewell 兩位老師.vegewell 這次改對了,
13/10*16 - 13%10 真的會等於 13
這個式子好神奇唷!!
不過若代入大於16的數就會出錯,
例如代入25,
25/10*16 - 25%10 = 28,
哈~~這是哪門子的BinToDec?
另一個DecToBin也是錯的.
底下式子可作個比較:
  1. byte DecToBin(byte val)
  2. {
  3.   return ( (val/10*16) - (val%10) );
  4. }

  5. byte BinToDec(byte val)
  6. {
  7.   return ( (val/2*10) + (val%2) );
  8. }
  9. void setup() {
  10.   Serial.begin(9600);
  11.   // 這是錯的
  12.   byte i = DecToBin(25);
  13.   Serial.println(i, BIN);
  14.   i = BinToDec(B11101);
  15.   Serial.println(i);
  16.     // 這是對的
  17.   String j = String(25, BIN);
  18.   Serial.println(j);
  19.   j = String(B11001, DEC);
  20.   Serial.println(j);
  21. }

  22. void loop() {}
複製代碼
5#
 樓主| 發表於 2013-4-29 23:34:32 | 只看該作者
這兩行:


為什麼不這樣寫就好?

byte i = 13;
Serial.println(i, BIN);


另外, DecToBin 也不 ...
coopermaa 發表於 2013-4-27 17:00
有請cooper老師出馬,
可否幫忙解決這個問題 >> http://www.robofun.net/forum/viewthread.php?tid=8090&extra=page%3D1
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

小黑屋|手機版|Archiver|機器人論壇 from 2005.07

GMT+8, 2024-9-28 03:15 , Processed in 0.107592 second(s), 9 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表