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灯, 水草

请输入看板名称,例如:BabyMother站内搜寻

TOP