免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3439 | 回复: 6
打印 上一主题 下一主题

字符串如何转换为8进制 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-08-02 10:59 |只看该作者 |倒序浏览
程序
#include        <stdio.h>;
#include        <sys/types.h>;
#include        <sys/stat.h>;
main(int ac,char * av[])
{
        int i;
        if (ac<3) {
                fprintf(stderr,"chmod1 request more argument\n";
                exit(1);
        }

        for (i = 2;i<ac;i++)
                if ( chmod(av,atoi(av[1]))== -1) {
                        fprintf(stderr,"chmod1:";
                        perror(av);
                }
}

$: chmod1 777  chmod1.c
达不到chmod 777 chmod1.c 这样的效果。但是如果把
程序里的这句改成
   if ( chmod(av,0777)== -1) {
就可以了。

请问如何把av[1]这个字符串转换成八进制数!

论坛徽章:
0
2 [报告]
发表于 2005-08-02 12:02 |只看该作者

字符串如何转换为8进制

计算机并不认得什么十进制,八进制,16进制,它只认得二进制.

八进制数0567 就是10进制数375

假定你的字符串是"567"

看看它是怎么转换成10进制数的.
0567 = 5  x 64 + 6 x 8 + 7 x 1
= 5 x 8 x 8 + 6 x 8 + 7
=(5 x 8 + 6) x 8 + 7
= ((0 x 8 + 5) x 8 + 6) x 8 + 7

(((0 x 8 + 5) x 8 + 6) x 8 + 7)


data = 0;
for (int i = 0; i < len; i++)
  data = (data x 8 + int(a - '0'))

至于从ASCII码值获得数值 好比是a[0] = '7';
则value = a[0] - '0';

论坛徽章:
0
3 [报告]
发表于 2005-08-02 12:31 |只看该作者

字符串如何转换为8进制

mode_t mode;
sscanf(av[1],"%o",&mode);
chmod(av,mode);

论坛徽章:
0
4 [报告]
发表于 2005-08-02 13:28 |只看该作者

字符串如何转换为8进制

我从网上查了
typedef int mode_t
但是为什么还是不对呢,难道必须用八进制不成??

论坛徽章:
0
5 [报告]
发表于 2005-08-02 13:59 |只看该作者

字符串如何转换为8进制

楼上edraw的解答没错啊

八进制也好,10进制也好,大小相同的话放到电脑里面都一样的二进制形式。
(1001001)2=(111)8=(49)16
对电脑来说只有2进制,只是给人看的时候要变成各种字符罢了,你输命令入电脑的时候输“chmod 777 file”,实际上你是要告诉电脑文件的权限变成2进制的111 111 111,之所以要用”777“这样的8进制没别的原因,就是因为一位8进制对应2进制的3个位,用起来方便。如果你程序不做8进制转换,用10进制,那么上面的那个命令,你就要变成”chmod 511 file“了,511 是什么权限呢?没人一眼能看出来

论坛徽章:
0
6 [报告]
发表于 2005-08-02 18:10 |只看该作者

字符串如何转换为8进制

谢谢各位的回答。

论坛徽章:
0
7 [报告]
发表于 2005-08-03 09:33 |只看该作者

字符串如何转换为8进制

原帖由 "luojiannx" 发表:
楼上edraw的解答没错啊

八进制也好,10进制也好,大小相同的话放到电脑里面都一样的二进制形式。
(1001001)2=(111)8=(49)16
对电脑来说只有2进制,只是给人看的时候要变成各种字符罢了,你输命令入电脑的..........

说的正解!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP