Aside

顽固的守卫-36进制转换

不得不吐槽,什么年代了,还要用哪些过时的东西。
哪些人说,稳定,人家都在用,有现成原型….
这无非是盲从,懒惰,终是无能,然而却掌握了话语权。
吐槽完毕,锅最终还是要有人背。
有个中间件软件系统,对命名,配置,参数做了严格限制。比如配置名长度必须4位,通讯队列名必须小于8位,甚至于端口号的大小也自己做了控制(65535以内还不够小?)。这个就是大名鼎鼎长度IBM帮我们省的。掌握话语权的自认为有能力驾驭好这个古董,程序猿早已对这玩意深恶痛绝:好在哪?稳定吗,高效吗?未必吧!恐怕只是不敢尝试新的,或是只是手中唯一的救命稻草?
为何还在吐槽…正题呢?呃,不好意思。
今天的槽点主要是:32GB内存为何还以为我只有64K。省确是件好事,然而要看省在哪方面。
程序中需要用到中间件队列名来匹配请求应答,而且不能重复。然后唯一可用的是流水号,是12位的。
而对列名最长8位!这点没办法了,闭源收费,你能耐我何!只有一个思路了-压缩流水:
当年数制转化是这样学的,模运算再倒序重排。效率暂不研究:

   int len=0;
    int i=0;
    char d=' ';
    int m=0;
    while(num)
    {
        m=num%36;
        if(m>9)
        {
            d='a'+m-10;
        }
        else
        {
            d='0'+m;
        }
        sprintf(des,"%s%c",des,d);
        num=num/36;
    }

        len=strlen(des);
        for(i=0;i<len/2;i++)
        {
            d=*(des+i);
            *(des+i)= *(des+len-i-1);
            *(des+len-i-1)=d;
        }

 

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.