位序转字符串的一种高效方法

原创 2012年03月28日 22:01:57
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <string.h>
#include <arpa/inet.h>

#define ROW_UNIT    512
#define UNIT_LENGTH 500
/* 其中ROW_UNIT为使用的位长度,是64的整数倍,但乘积大于UIIT_LENGTH
   UNIT_LENGTH为需要转换的位长度。
   UNIT_LENGTH为需要转换的位长度。也可以是64 64 等,
   ROW_UNIT 需要不小于 UNIT_LENGTH
  */
unsigned long long bits_str[256];
static inline int bits_to_str_init(void)
{
        int i, low, high;
        int bit_str[16] = {
                0x00000000, 0x00000001, 0x00000100, 0x00000101,
                0x00010000, 0x00010001, 0x00010100, 0x00010101,
                0x01000000, 0x01000001, 0x01000100, 0x01000101,
                0x01010000, 0x01010001, 0x01010100, 0x01010101,
        };

        memset(bits_str, '0', sizeof(bits_str));
        for(i=0; i<256; ++i) {
                low = i&0x0F;
                high = i&0xF0;
                high >>= 4;
                *(int *)&bits_str[i] += htonl(bit_str[high]);
                *((int *)&bits_str[i] + 1) += htonl(bit_str[low]);
        }
        return 0;
}

static inline int bitstostr(char *str, unsigned char *bits)
{
        int i;
        unsigned long long *pos = (unsigned long long *)str;
        int c = ROW_UNIT>>3;
        for(i=0; i<c; ++i) {
                *pos = bits_str[(int)(*bits)];
                ++pos;
                ++bits;
        }
        str[UNIT_LENGTH] = 0;
        return 0;
}

int main(int argc ,char *argv[])
{
	if(bits_to_str_init() < 0) return -1;
	unsigned char bits[64];
	int i;
	for(i=0; i<64; ++i) {
		bits[i] = i;
	}
	char str[512];
	bitstostr(str, bits);
	for(i=0; i<strlen(str); ++i) {
		printf("%c", str[i]);
		if(((i+1)&0x7) == 0) printf("\n");
	}
	
	return 0;
}

相关文章推荐

一种巧妙的反转字符串的方法及思考过程

如题,需求是反转字符串,当然啦方法是有很多的,这种我觉得蛮有意思的^_^#include #include using namespace std;int main() { string s...
  • NoMasp
  • NoMasp
  • 2015年12月22日 14:37
  • 1755

一种高效的MAPGIS数据转换方法

  • 2010年10月06日 18:00
  • 543KB
  • 下载

一种高效的HTML至XML的转换方法

  • 2012年04月01日 10:39
  • 205KB
  • 下载

【网站编程技巧】一种十分简单高效的文本表单和文件一起提交的方法

以上代码是写在页面里的一个提交word文档的表单。为了说明此表单提交的是文件数据,我们使用了 enctype="multipart/form-data" ,但是设置了此项之后,如果我们将无法同时提交...
  • TBWood
  • TBWood
  • 2013年05月09日 13:26
  • 1226

Android一种高效压缩图片的方法

  • 2016年02月19日 11:54
  • 3.99MB
  • 下载

一种高效的 vector 四则运算处理方法

http://www.cnblogs.com/catch/p/5676662.html 实现 vector 的四则运算 这里假设 vector 的运算定义为对操作数 vector 中相...

一种快速高效的文本分类方法

  • 2011年04月18日 11:04
  • 146KB
  • 下载

大规模高能效图遍历: 一种高效的数据密集型超级计算方法

Large-Scale Energy-Efficient Graph Traversal: A Path to Efficient Data-Intensive Supercomputing 作者: ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:位序转字符串的一种高效方法
举报原因:
原因补充:

(最多只允许输入30个字)