看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Keil uVision5 C51 問題(Question): 板上先進們好,遇到一些問題,請各位幫忙,謝謝 1. 我有個模組是用浮點數做為函數的宣告,函數型式如下 float Data_read() 我想要將讀出來的數值轉換成ASCII,我直接轉成int做輸出 程式可以編譯成功,但是實體上就無法正常運行 請問是我轉換的過程有錯誤? 2. 如果讀出某段數值是先丟入array,我要將讀到的數值做比較 可以直接用數字做比較還是需要用兩個array做比較呢? 程式碼(Code):(請善用置底文網頁, 記得排版) 1.float -> ASCII http://ideone.com/5m4hc5 2.array比較 http://ideone.com/yhUbSy -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 120.109.170.21 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1449818479.A.67B.html
stupid0319: unsigned char最大也只到255,你除以1000當然會出錯啊 12/11 18:03
sorry,沒注意到區間
Caesar08: 第二個是在問什麼,怎麼有看沒懂 12/11 18:22
讀取數值的原型態,先將數值讀進array Data_read(unsigned char data[5]) 我要將讀取到的data[5]和某a[2]裡面的數值做比較 ex: data[2]->裡面是30、a[2]->裡面是25 ※ 編輯: andy79323 (120.109.170.21), 12/11/2015 18:34:25
Caesar08: data[2]==a[2] ? 12/11 19:01
不一樣,這是兩個變數陣列 ※ 編輯: andy79323 (120.109.170.21), 12/11/2015 20:33:39
Caesar08: 你是要比較整個陣列,還是比較陣列裡面的某兩個元素? 12/11 20:42
比較陣列某幾個元素 ※ 編輯: andy79323 (120.109.170.21), 12/11/2015 21:26:09
chuegou: 我猜你是想要比較"data[]整個陣列代表的數" 12/11 22:06
chuegou: 和"a[]陣列的某個元素"? 12/11 22:07
是的,差不多是這意思 data[5]-> 我只要取data[2]、data[0]出來做比較 a[2]->欲比較的數值,例如:a[2]={20,25}; 我上網查過陣列不能直接跟陣列做比較,請問先進們有比較好的方式可以處理? ※ 編輯: andy79323 (120.109.182.133), 12/11/2015 22:33:42
chuegou: 想用union....但是data[]取的不連續... 12/11 23:04
Caesar08: data[2]==a[0], data[2]==a[1]? 12/11 23:09
overhead: 還是看不懂你第二題的意思 你想比較甚麼元素 就指定該 12/11 23:28
overhead: 兩個元素去作比較就對了 依需求可以用雙重迴圈 12/11 23:28
overhead: 另外int b[2]={30,20};只有b[0],b[1]兩個元素 沒有b[2] 12/11 23:30
a[2]->這個是放欲比較的數值,可以不用設陣列,這可有可無 data[5]->會取data[2]、data[0]這是因為要取特殊的數據用 第一個問題我設為 unsigned short int 功能也是讀不到 ※ 編輯: andy79323 (120.109.182.133), 12/12/2015 00:57:42
chuegou: 第一題想到一種可能性...沒有加一個NULL當作結束位元? 12/12 04:25
第一個問題,我用同樣的方式做轉換,是可以正常傳送轉換後的數據 http://imgur.com/wbq9NwU
OPIV: 我覺得…先學好國文…囧…真的看不懂你想表達什麼 12/12 04:56
sorry,表達的可能不是很清楚 副程式長得有點像這樣 應該說我的問題在模組讀取完數值放入的array->稱作a 跟我要比較的數值->稱作b 'a和b的比較過程'->我的問題處,陣列的比較不能直接這樣做,我不太懂這怎麼處理@@ http://imgur.com/l5NRKDY ※ 編輯: andy79323 (120.109.182.133), 12/12/2015 09:27:34
james732: 所以你看到dh的值是…? 12/12 09:36
james732: 需求是:只要取data[2]、data[0]出來做比較 12/12 09:38
james732: 這樣的話unsigned int tmp = (dh[2] << 8) | dh[0] 12/12 09:40
james732: 組合成一個int後再拿來比較? 12/12 09:40
這個是模組的原型 bit Data_read(unsigned char data[5]) U8temp = (data[0] + data[1] + data[2] + data[3]); if (data[4] == (data[0] + data[1] + data[2] + data[3])) { return 1; } 從data[5]裡面讀到的數->抓取data[0]、data[2]出來和上面圖片中的dcc[2]做比較 data[5]=dh[5]->dh裡面放的是上面讀取的數據 是的,要先組合成一個int,再來和dcc[2]的數值比較 ※ 編輯: andy79323 (120.109.170.21), 12/12/2015 11:50:27
OPIV: 先把權重大的部分放進一個 int 裡面,然後左移這個 int,再 12/12 12:30
OPIV: 把權重小的部分放也進去,組成一個完整的 int 12/12 12:31
OPIV: int 被拆成好幾段的話也是重複這個步驟 12/12 12:31
Caesar08: data是一個array,data[5]是一個int,你一直說data[5], 12/12 13:11
Caesar08: 我以為你要比一個不存在的資料 12/12 13:11
Caesar08: 你圖片84行與90行沒甚麼問題(除了char轉int) 12/12 13:13
Caesar08: 乾脆直接dh[0]>dcc[0], dh[0]<dcc[1], dh[2]>dcc[0], 12/12 13:15
Caesar08: dh[2]<dcc[1]這樣比較,但你要小心==的時候 12/12 13:16
好像也是不行 http://imgur.com/2zn9LEg ※ 編輯: andy79323 (120.109.170.21), 12/12/2015 14:17:35
Caesar08: ... [重要] 發文前務必閱讀:常見問題十三誡 第2點 12/12 15:03
我第二個問題解決了,但是我用我圖片的方法做... ※ 編輯: andy79323 (120.109.170.21), 12/12/2015 17:51:58
cyber9270: 陣列宣告成dh[2], 操作時用dh[2]的資料是啥?陣列指示 12/13 08:08
cyber9270: 數超過1不會讀到亂碼嗎? 12/13 08:08
cyber9270: 我是指21樓下面的程式 12/13 08:12