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

原创 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;
}

大小端(字节序)位序

字节序     字节序,又称端序、尾序,英文单词为Endian,该单词来源于于乔纳森·斯威夫特的小说《格列佛游记》,小说中的小人国因为吃鸡蛋的问题而内战,战争开始是由于以下的原因:我们大家都认为,吃鸡...
  • arpann
  • arpann
  • 2014年03月08日 11:25
  • 1157

整数转字符串的一种快速实现

整数转字符串的一种快速实现
  • xiahouzuoxin
  • xiahouzuoxin
  • 2014年04月09日 12:34
  • 2701

ACM-括号配对问题

题目 括号配对问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 现在,有一行括号序列,请你检查这行括号是否配对。 输入 第一行输入一个数N(0 输出 ...
  • e891377
  • e891377
  • 2016年08月03日 00:43
  • 183

FFT算法1-倒位排序法的实现

摘要:FFT算法的第一步是对数据进行处理,输入并不是自然序列而是倒位序列。...
  • xz1308579340
  • xz1308579340
  • 2017年05月14日 14:01
  • 470

字符串——拼接最小字典

对于一个给定的字符串数组,请找到一种拼接顺序,使所有小字符串拼接成的大字符串是所有可能的拼接中字典序最小的。 给定一个字符串数组strs,同时给定它的大小,请返回拼接成的串。 测试样例: ...
  • IFollowRivers
  • IFollowRivers
  • 2017年07月08日 11:01
  • 240

字符串压缩的一些算法

应用中,经常需要将字符串压缩成一个整数,即字符串散列。比如下面这些问题:(摘自JULY的博客  http://blog.csdn.net/v_july_v/ ) (1)搜索引擎会通过日志文件把用户每...
  • coloriy
  • coloriy
  • 2015年08月11日 13:57
  • 467

String字符串逆序输出的两种方式

String字符串逆序输出 String字符串的之间的各类转化操作 http://blog.csdn.net/sunrainamazing/article/details/71583685 ...
  • sunrainamazing
  • sunrainamazing
  • 2017年05月10日 20:30
  • 632

Java中字符串转整型和整型转字符串

Java大多数情况下,用户通过文本框或者文本域提交自己的输入。用户通过文本框或文本域输入的内容通常是string格式的。而你常常需要的是这些内容的整数形式。例如,年龄,电话号码等等。为了使字符串转为整...
  • ergouge
  • ergouge
  • 2015年10月22日 17:10
  • 5419

Python字符串逆序输出

Python字符串逆序输出 1、有时候我们可能想让字符串倒序输出,下面给出几种方法 方法一:通过索引的方法 方法二:借组列表进行翻转 2、分别输出字符串奇数坐标和偶数坐标的字符 最简单的方法是直接通...
  • SeeTheWorld518
  • SeeTheWorld518
  • 2015年07月04日 17:58
  • 17795

每个字节实现位倒序

每个字节实现位倒序  三种方法  一、  unsigned char Reverse(unsigned char uch)  {  unsigned char retValue = 0...
  • Uncle_GUO
  • Uncle_GUO
  • 2015年01月10日 02:12
  • 1353
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:位序转字符串的一种高效方法
举报原因:
原因补充:

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