免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: sohu2000000
打印 上一主题 下一主题

[C] 【原创】任意正整数转换为四进制或八进制数  关闭 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2010-10-06 17:04 |只看该作者
回复 8# noword2k


   
有现成的ltoa,从2进制到36进制都可以转,虽然不是ANSI C的函数,但是好歹有搜索引擎不是:


...
noword2k 发表于 2010-09-07 15:01



       哈哈,好吧。

    1,关于:
       有现成的ltoa,从2进制到36进制都可以转,虽然不是ANSI C的函数,但是好歹有搜索引擎不是:http://www.google.com/codesearch ... cense=&as_case=
          程序员的三大美德之首就是“懒惰”,重复造轮子是愚蠢的行为。

       答复:
       所有的正规的大规模的C工程都会有自己的基础平台,而不是直接使用库文件的,你以后如果有机会接触到企业级的代码也许会明白的
          给你连个建议的地址:
        a. 手机开发方面参考一下QT的symbian系统就会发现,连类似throw的功能都是自己实现的
        b. server级的开发参考一下apache,里面的string使用的是apache-string,而不是cstring或者std::string  


    2. 关于:
       printf怎么就危险了?你能让printf溢出内存? 去www.kernel.org,下载个最新的内核包,解开后“grep printf * -r|less”看看,有多少printf甚至sprintf。
       答复:
       在中国有多少linux的开发机会的工作我不知道,我们这些普通人是做ROUTER开发的,应用级别,做的也是应用平台,如果您是搞“真正的内核”的,我们也就只能望其项背了,哈哈哈

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:11
12 [报告]
发表于 2010-10-06 17:10 |只看该作者
输出任意进制数字。

  1. #include <stdio.h>

  2. void print_digit(int num, int radix)
  3. {
  4.         int digit;
  5.         if (num > 0) {
  6.                 print_digit(num / radix, radix);
  7.                 digit = num % radix;
  8.                 if (radix > 10) {
  9.                         if (digit >= 10) {
  10.                                 putchar(digit + ('A' - 10));
  11.                         }else {
  12.                                 putchar(digit + '0');
  13.                         }
  14.                 }else {
  15.                         putchar(digit + '0');
  16.                 }
  17.         }
  18. }

  19. void printn(int num, int radix)
  20. {
  21.         if (radix >= 2 && radix <= 36) {
  22.                 if (num == 0) {
  23.                         putchar('0');
  24.                 }else if (num < 0) {
  25.                         if (radix == 10) {
  26.                                 putchar('-');
  27.                         }
  28.                         print_digit(-num, radix);
  29.                 }else {
  30.                         print_digit(num, radix);
  31.                 }
  32.         }
  33. }

  34. int main(void)
  35. {
  36.         printn(36858, 2);
  37.         putchar('\n');
  38.         printn(36858, 4);
  39.         putchar('\n');
  40.         printn(36858, 8);
  41.         putchar('\n');
  42.         printn(36858, 10);
  43.         putchar('\n');
  44.         printn(36858, 16);
  45.         putchar('\n');
  46.         printn(36858, 36);
  47.         putchar('\n');
  48.         return 0;
  49. }
复制代码

论坛徽章:
0
13 [报告]
发表于 2010-10-06 18:25 |只看该作者
回复 12# cobras


   
输出任意进制数字。
cobras 发表于 2010-10-06 17:10


   好,收藏下了  :)

论坛徽章:
0
14 [报告]
发表于 2010-10-06 20:31 |只看该作者
>> 所有的正规的大规模的C工程都会有自己的基础平台,而不是直接使用库文件的

扯蛋。人家也没几个像你这样连自定义进制输入输出都不敢用标准库的。
自己造轮子,常常说明程序员对库函数不熟悉、不了解。这是逃避,不是创新。

Remember: 计算机只认得二进制,也不存在“进制转换”的问题。只要统一输入/输出的格式就足够了。

>> 你以后如果有机会接触到企业级的代码也许会明白的

相反,我并不认为一个命名习惯如此烂的程序员算是接触并理解了多少的“企业级”代码:

printOtc
printQuater
printbin
int x;

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
15 [报告]
发表于 2010-10-06 21:11 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:11
16 [报告]
发表于 2010-10-06 23:01 |只看该作者
是否使用库函数还得看工程的运行环境.如果运行环境支持库函数,则可以使用,否则只有自己造轮子了.

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:11
17 [报告]
发表于 2010-10-06 23:11 |只看该作者
再多说一句,库函数也分为2种,系统相关的和系统无关的.其中系统无关的在任何情况下都可以使用.如绝大多数字符串库函数.

论坛徽章:
0
18 [报告]
发表于 2010-10-07 03:46 |只看该作者
回复 14# langue


   
>> 所有的正规的大规模的C工程都会有自己的基础平台,而不是直接使用库文件的

扯蛋。人家也没几个像你这 ...
langue 发表于 2010-10-06 20:31



    ......................我真是无语了,你自己看着办吧,祝你平安

论坛徽章:
0
19 [报告]
发表于 2010-10-07 03:50 |只看该作者
>> 所有的正规的大规模的C工程都会有自己的基础平台,而不是直接使用库文件的

扯蛋。人家也没几个像你这 ...
langue 发表于 2010-10-06 20:31


    "自己造轮子,常常说明程序员对库函数不熟悉、不了解。这是逃避,不是创新。" --- 这句说的太有才了,哈哈,我同事都笑蒙了
    我相信你一定可以在MFC的世界里大放异彩,因为那里各种库函数多得很,绝对符合你的style,呵呵

论坛徽章:
0
20 [报告]
发表于 2010-10-07 03:53 |只看该作者
回复 17# cobras


   
再多说一句,库函数也分为2种,系统相关的和系统无关的.其中系统无关的在任何情况下都可以使用.如绝大多数字符 ...
cobras 发表于 2010-10-06 23:11



    分2种,一种是系统调用,一种是库调用,由于对类型存储的变化,在很多不同类型的编译器和cpu的情况下,free的asci库是不方便的,这也就是为什么有商用库的原因了,比如roguewave
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP