[問題] 請問如何將 非int型態資料 轉成 int ??
因為我要做的是資料處理
樣本有兩種, 一種是 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
推
03/03 21:16, , 1F
03/03 21:16, 1F
→
03/03 21:21, , 2F
03/03 21:21, 2F
→
03/03 21:21, , 3F
03/03 21:21, 3F
→
03/03 21:22, , 4F
03/03 21:22, 4F
→
03/03 21:22, , 5F
03/03 21:22, 5F
→
03/03 21:22, , 6F
03/03 21:22, 6F
→
03/03 21:24, , 7F
03/03 21:24, 7F
推
03/03 21:25, , 8F
03/03 21:25, 8F
→
03/03 21:26, , 9F
03/03 21:26, 9F
→
03/03 21:27, , 10F
03/03 21:27, 10F
推
03/03 21:30, , 11F
03/03 21:30, 11F
→
03/03 21:31, , 12F
03/03 21:31, 12F
→
03/03 21:32, , 13F
03/03 21:32, 13F
推
03/03 21:35, , 14F
03/03 21:35, 14F
→
03/03 21:36, , 15F
03/03 21:36, 15F
→
03/03 21:38, , 16F
03/03 21:38, 16F
→
03/03 21:41, , 17F
03/03 21:41, 17F
→
03/03 21:45, , 18F
03/03 21:45, 18F
→
03/03 21:46, , 19F
03/03 21:46, 19F
→
03/03 21:46, , 20F
03/03 21:46, 20F
推
03/03 21:48, , 21F
03/03 21:48, 21F
→
03/03 21:49, , 22F
03/03 21:49, 22F
→
03/03 21:50, , 23F
03/03 21:50, 23F
→
03/03 21:50, , 24F
03/03 21:50, 24F
推
03/03 21:53, , 25F
03/03 21:53, 25F
→
03/03 21:53, , 26F
03/03 21:53, 26F
→
03/03 21:54, , 27F
03/03 21:54, 27F
→
03/03 21:55, , 28F
03/03 21:55, 28F
→
03/03 21:55, , 29F
03/03 21:55, 29F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章