| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1188 人关注过本帖
标题:字符赋给整型量的问题请教一下
只看楼主 加入收藏
洪溪
Rank: 2
等 级:论坛游民
帖 子:42
专家分:34
注 册:2010-9-7
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:17 
字符赋给整型量的问题请教一下
  把几个字符封装到unsigned类型(可装4个字符)里面去  感觉没问题啦怎么输出结果不对啊

#include<iostream>
using namespace std;
int i=0;//记录包装过的字节数

unsigned pack(char chars)
{
    if (i<4)
        i++;//记录包装过的字节数,比如第一次的时候装到第4个字节
    unsigned hold;//暂存字符变量
    unsigned packbody=0;//包装体

    hold=chars;//把字符量交给hold
    hold<<=8*(4-i);//把字符移入packbody中没有记录的地方
    packbody+=hold;
    return packbody;

}//包装函数

template<typename T>
void print( T num)
{
    int mask=1;
    int shift=8*sizeof(T);
    mask<<=shift-1;
    for (int i=0;i<shift;i++)
    {
        if((mask & num)>0)
            cout<<1;
        else
            cout<<0;
        mask>>=1;
    }
    cout<<endl;

}//二进制输出

#include<iostream>
using namespace std;
void main()
{
    char test1='d',test2='b';
    unsigned testnumber;

    pack(test1);
    testnumber=pack(test2);

    print(test1);
    print(test2);
    print(testnumber);
   
}
搜索更多相关主题的帖子: 字符 整型 
2010-11-25 11:46
木头lbj
Rank: 7Rank: 7Rank: 7
来 自:黄山
等 级:黑侠
威 望:1
帖 子:269
专家分:527
注 册:2010-11-6
收藏
得分:2 
额。。。不懂。。。。

。。。!!!)))000
2010-11-25 12:29
玩出来的代码
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:河南新乡
等 级:贵宾
威 望:11
帖 子:742
专家分:2989
注 册:2009-10-12
收藏
得分:12 
错误
1.int mask=1,mask是有符号数,你右移31位会是什么值,
2.packbody是局部变量。
3.packbody+=hold,达不到你的要求
收到的鲜花
  • 洪溪2010-11-25 21:47 送鲜花  5朵   附言:我很赞同

离恨恰如春草,更行更远还生。
2010-11-25 13:58
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:6 
才读没几行就觉得 packbody+=hold 这語句恐怕对不了。

呵呵,就不细看了,有人答的比我好多了~~
2010-11-25 19:26
洪溪
Rank: 2
等 级:论坛游民
帖 子:42
专家分:34
注 册:2010-9-7
收藏
得分:0 
回复 3楼 玩出来的代码
大侠确实非常人也  听你一言真的是醍醐灌顶  我感觉方法是对的但怎么也想不明白 其中的错误..若不是你一语点破我真不知道痛苦到什么时候  你的第1 第2 条指示我同意 但第三条我是对的...谢谢谢谢谢谢你
2010-11-25 21:52
洪溪
Rank: 2
等 级:论坛游民
帖 子:42
专家分:34
注 册:2010-9-7
收藏
得分:0 
回复 2楼 木头lbj
呵呵 一起加油朋友
2010-11-25 21:54
洪溪
Rank: 2
等 级:论坛游民
帖 子:42
专家分:34
注 册:2010-9-7
收藏
得分:0 
回复 4楼 pangding
呵呵 这是对的 真的 我试过了 不信你再想想
2010-11-25 21:56
洪溪
Rank: 2
等 级:论坛游民
帖 子:42
专家分:34
注 册:2010-9-7
收藏
得分:0 
回复 3楼 玩出来的代码
还有 我觉得整形数和无符号数 的差别不就是在最高位的一位嘛  左移之后符号位不就不在了嘛  那俩者不都是一样的吗??  但我试过了 改成整形确实不行  我真想不通其中的奥妙啦  不知大侠能否再赐教赐教啊  感激不尽
2010-11-25 22:05
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
C 用的是有符号位移运算,符号位的 1 是不会移出的。

那个 += 的我就不想了。不过一般是用 位运算 。不用只能说想法比较奇怪,如果没错误,用也可以。


仔细看了一下,没太看明白,为什么 packbody 不能用局部变量?


[ 本帖最后由 pangding 于 2010-11-25 22:31 编辑 ]
2010-11-25 22:23
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
其实楼主这个功能可以考虑用一个 union 来替代。
2010-11-25 22:28
快速回复:字符赋给整型量的问题请教一下
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013426 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved