想调优别人的代码,网上搜索一下Binary to Hexstring的转换,全是利用printf、scanf之类实现的,效率好低,还是自己想个简单的办法吧!

.......此处省略一万字.......

改进后的方法:

 int tohex(void* str, int strlen, char *ascii, int size)
{
if(strlen == || str== NULL || ascii==NULL)
{
if(NULL != ascii)
ascii[]=0x00;
return ;
} char* p1 = ascii;//new char[len*2+1];
unsigned char* p2 = (unsigned char*)str;
int i = , j = ;
char dict[]={'','','','','','','','','','','A','B','C','D','E','F'};
bool blCuted = false;
for( i = ; i < strlen; ++i)
{
p1[j] = dict[ (p2[i] >> )];
p1[j+] = dict[p2[i] & 0x0F];
j+=; if(j > size){
blCuted = true;
break;
}
}
if(blCuted)
j-= ;
p1[j] =0x00;
return j;
}

改进前的方法(抄的):

 int BCD2ASC(const char *str, int strlen,char *ascii, int size)
{
int i = , p = , l = ;
byte ch; if(strlen == || str== NULL || ascii==NULL)
return NULL; bool blCuted = false;
while(i<strlen)
{
ch = str[i++];
l += ;
if(l > size){
blCuted = true;
break;
}
p += sprintf(ascii+p, "%02X", ch);
} if(blCuted)
l-= ;
return l;
}

测试代码:

  int main( )
{
int a=0x1234;
int b=0xabcd;
char *bistr="\x12\x34\x56\x78\x90\xab\xcd\xef\xe1\xf9\x1f\x1e\x00";
char szTmp[*] = {};
tohex(&a, sizeof(int), szTmp, sizeof(szTmp)); cout << szTmp << endl;
tohex(&b, sizeof(int), szTmp, sizeof(szTmp)); cout << szTmp << endl;
tohex(bistr, strlen(bistr), szTmp, sizeof(szTmp)); cout << szTmp << endl; FILE* fp = fopen("D:\\testbinary.bi", "rb");
char szBinary[*] = {};
int ired = fread(szBinary, , *-, fp);
cout << "readlen:" << ired <<endl; DWORD dwB = GetTickCount();
for(int i = ; i < ; ++i)
{
tohex(szBinary, ired, szTmp, sizeof(szTmp)-); //i=1w,<200ms
cout << szTmp << endl;
BCD2ASC(szBinary, ired, szTmp, sizeof(szTmp)-); //i=1w,9000ms
cout << szTmp << endl;
}
DWORD dwE = GetTickCount(); cout << "cost:" << dwE-dwB << "ms" <<endl; fclose(fp);
return ;
}

效率差的不是一条街,你可以try一下。

Binary转换成Hex字符串的更多相关文章

  1. C#中对象,字符串,dataTable、DataReader、DataSet,对象集合转换成Json字符串方法。

    C#中对象,字符串,dataTable.DataReader.DataSet,对象集合转换成Json字符串方法. public class ConvertJson { #region 私有方法 /// ...

  2. DataTable转换成json字符串

    将DataTable里面的行转换成json字符串方法: #region DataTable转为json /// <summary> /// DataTable转为json /// < ...

  3. Newtonsoft.Json 把对象转换成json字符串

    var resultJson = new { records = rowCount, page = pageindex, //总页数=(总页数+页大小-1)/页大小 total = (rowCount ...

  4. Java将其他数据格式转换成json字符串格式

    package com.wangbo.util; import java.beans.IntrospectionException; import java.beans.Introspector; i ...

  5. json 字符串转换成对象,对象转换成json字符串

    json   字符串转换成对象,对象转换成json字符串 前端: 方法一: parseJSON方法:   [注意jquery版本问题] var str = '{"name":&qu ...

  6. PDF转换成二进制字符串写入 HTTP 输出流

    最近项目需要做电子签章,需要网页打开PDF签章后保存:正好复习哈二进制和流的转换: 文件转换成二进制字符串写入HTTP输出流 protected void Page_Load(object sende ...

  7. JSON对象转换成JSON字符串

    1.问题背景 有一个json对象,需要将其转换成json字符串 JSON.stringify(obj) 2.实现源码 <!DOCTYPE html PUBLIC "-//W3C//DT ...

  8. java 图片转换成base64字符串

    import java.io.ByteArrayOutputStream; import java.io.FileInputStream;import java.io.FileOutputStream ...

  9. JQuery将form表单值转换成json字符串函数

    由于后台接口限定,必须要将表单内容转换成json字符串提交,因此写了一个将form表单值转成json字符串的函数.     前提:页面引入了JQuery          下面直接上代码 一.代码 / ...

随机推荐

  1. MaterialWidgetLibrary 学习

    studio项目地址:https://github.com/keithellis/MaterialWidget 修改后的eclipse项目地址: 修改后的eclipse项目 Demo地址: activ ...

  2. fiddler2 中文乱码问题

    打开注册表编辑器,找到HKCU\Software\Microsoft\Fiddler2\,在里面添加一个字符串值,名叫HeaderEncoding,值设置为默认编码.建议设成GB18030.然后要记得 ...

  3. mystring c++ 自己的string 封装

    1 /************************************************************************* > File Name: mystrin ...

  4. ural1003 Parity

    Parity Time limit: 2.0 secondMemory limit: 64 MB Now and then you play the following game with your ...

  5. DML、DDL、DCL区别及介绍

    DML(data manipulation language):        它们是SELECT.UPDATE.INSERT.DELETE,就象它的名字一样,这4条命令是用来对数据库里的数据进行操作 ...

  6. 轻量级别的Cache和反向代理软件---Varnish

    1.Varnish描述 1.1 Varnish的结构与特点 Varnish是一个轻量级别的Cache和反向代理软件,先进的设计理念和成熟的设计框架是Varnish的主要特点: 基于内存进行缓存,重启后 ...

  7. UITableView表格操作

    UITableView[表格视图] UITableView是表格视图,是UIScrollView的子类,非常重要. 一.表格视图常用属性 1.基本属性方法 创建一个tableView //    UI ...

  8. js图片未加载完显示loading效果

    <html> <title>js图片未加载完显示loading效果</title> <body> <style> img{float:lef ...

  9. Ubuntu Server PHP常用扩展库的安装

    sudo apt-get install php5-gd curl libcurl3 libcurl3-dev php5-curl

  10. js MD5加密后的字符串

    js MD5加密后的字符串 <script language="JavaScript"> /************************************** ...