C_and_CPP 板


LINE

因為我要做的是資料處理 樣本有兩種, 一種是 8 bits per sample, 一種是 16 bits 以下是我的 code ifstream in(file_name,ios::binary); char c; int temp; int frequency[256]={0}; for(int i=0;i<file_length;i++){ temp=c; //強制將 char 放進 int 裡 temp=temp+128; frequency[temp]++; } 這程式是要統計各個值出現的次數 我原先使用了 int n=atoi(c); 發現並不能 work (不知道是 atoi 不能吃 char 型態還是???) 之後我發現 char 可以直接存進 int 裡 所以才寫了下半部的迴圈, 能正確統計出各個值出現的字數 這在處理 1 byte 的 sample 的時候還可以 但在處理 2 bytes 的 sample時 要怎麼才能將 2 bytes 的資料存入 int 內呢 ??? 我能想到的作法只有 先抓 1 byte 存入 int a 後 將 a 往左 shift 8 bits 之後再抓 1 byte 放入 int b 之後 a+b 再加上 2的15次方 (將所有值都轉為非負數) 可是這樣的作法好像太過麻煩~ 加上這樣的形態轉換問題其實還蠻常碰到的 想請教各位大大有沒有比較好的作法 , 謝謝^^! --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.133.199.90
1F:推 Fenikso:unsigned short s; in.read((char*)&s, 2); 03/03 21:16
2F:→ walker2009:想請問,原先我也有想到用unsign看是不是可以省去 +128 03/03 21:21
3F:→ walker2009:可是這樣是否會有值錯亂的問題?? 03/03 21:21
4F:→ walker2009:因為在 char 中原先 msb 是 1 的原本應該是 負值 03/03 21:22
5F:→ walker2009:可是在存到 unsigned 後 似乎會變成正數,且比原先 msb 03/03 21:22
6F:→ walker2009:是 0的還大 03/03 21:22
7F:→ walker2009:感謝 F 大多次幫我解決困難XDDDD 03/03 21:24
8F:推 Fenikso:會不會錯亂要看那個值對你的意義@@ 03/03 21:25
9F:→ walker2009:嗯...因為我是想保持住原有的大小順序,之後才能轉回來 03/03 21:26
10F:→ walker2009:這樣的話除了加上2的power之外, 還有好的做法嗎 @@ 03/03 21:27
11F:推 Fenikso:如果只是要signed/unsigned互轉的話直接cast就好 03/03 21:30
12F:→ Fenikso:結果會是一樣的.. 順序其實不重要 03/03 21:31
13F:→ walker2009:這樣我了解了!!! 感謝 F大 ^^ 03/03 21:32
14F:推 godman362:int n = atoi(c.str()); 試試看,我之前都是這樣處理 03/03 21:35
15F:→ godman362:打錯,是int n = atoi(c.c_str()); 03/03 21:36
16F:→ godman362:然後記得要include string.h 或是cstring 03/03 21:38
17F:→ walker2009:馬上試試! 03/03 21:41
18F:→ walker2009:god大我試了不成功耶Q_Q c_str 跟 str 都沒有宣告 03/03 21:45
19F:→ walker2009:我有 include cstring 了, string.h 也試過 03/03 21:46
20F:→ walker2009:不知道是不是 Dec C++ 的問題 03/03 21:46
21F:推 godman362:沒啊....我都很正常啊 03/03 21:48
22F:→ walker2009:可能是我的版本太舊了XDD 4.9.9.2 03/03 21:49
23F:→ walker2009:還是說atoi一定要字串型態才能轉, char 不行0.0 03/03 21:50
24F:→ walker2009:單抓一個 char 的話字尾沒有 \0 ~ 03/03 21:50
25F:推 godman362:sorry,atoi(c.c_str()) 適用於string 03/03 21:53
26F:→ godman362:沒注意到你的c是char型態 03/03 21:53
27F:→ walker2009:XDDDD 感恩感恩 03/03 21:54
28F:→ walker2009:只是每次處理圖片時要把 char 轉成 int 都讓我很頭痛 03/03 21:55
29F:→ walker2009:今天學到不少 XDDD 03/03 21:55







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:BuyTogether站內搜尋

TOP