Binary转换成Hex字符串
想调优别人的代码,网上搜索一下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字符串的更多相关文章
- C#中对象,字符串,dataTable、DataReader、DataSet,对象集合转换成Json字符串方法。
C#中对象,字符串,dataTable.DataReader.DataSet,对象集合转换成Json字符串方法. public class ConvertJson { #region 私有方法 /// ...
- DataTable转换成json字符串
将DataTable里面的行转换成json字符串方法: #region DataTable转为json /// <summary> /// DataTable转为json /// < ...
- Newtonsoft.Json 把对象转换成json字符串
var resultJson = new { records = rowCount, page = pageindex, //总页数=(总页数+页大小-1)/页大小 total = (rowCount ...
- Java将其他数据格式转换成json字符串格式
package com.wangbo.util; import java.beans.IntrospectionException; import java.beans.Introspector; i ...
- json 字符串转换成对象,对象转换成json字符串
json 字符串转换成对象,对象转换成json字符串 前端: 方法一: parseJSON方法: [注意jquery版本问题] var str = '{"name":&qu ...
- PDF转换成二进制字符串写入 HTTP 输出流
最近项目需要做电子签章,需要网页打开PDF签章后保存:正好复习哈二进制和流的转换: 文件转换成二进制字符串写入HTTP输出流 protected void Page_Load(object sende ...
- JSON对象转换成JSON字符串
1.问题背景 有一个json对象,需要将其转换成json字符串 JSON.stringify(obj) 2.实现源码 <!DOCTYPE html PUBLIC "-//W3C//DT ...
- java 图片转换成base64字符串
import java.io.ByteArrayOutputStream; import java.io.FileInputStream;import java.io.FileOutputStream ...
- JQuery将form表单值转换成json字符串函数
由于后台接口限定,必须要将表单内容转换成json字符串提交,因此写了一个将form表单值转成json字符串的函数. 前提:页面引入了JQuery 下面直接上代码 一.代码 / ...
随机推荐
- Box2d FilterData
Box2D.Dynamics.b2ContactFilter类,碰撞源码: public virtual function ShouldCollide(fixtureA:b2Fixture, fixt ...
- android 5.0
google 2014开发大会发布了全新的设计语言Material Design,并计划将其应用到Android.Chrome OS和网页等平台上,而最新发布的Android L系统就采用了这种设计语 ...
- OpenCart之联系我们contact us页面提交时邮件错误
许多OpenCart系统的用户都发现联系我们contact us页面提交时发生错误.本页发生错误是正常的,原因如下: 1. 你设定了SMTP,因此SMTP默认是从你设置的SMTP的email账户中发出 ...
- 【转】bootstrap 的 affix.js 插件
我觉得 Twitter Bootstrap 提供的 JavaScript 插件可用性非常高,但文档多数简单.按部就班操作了,有效果当然好,没效果的话简直不知道为什么.之前我写过 Scrollspy 用 ...
- Ubuntu Linux系统下的SVN客户端工具PySVN
在Windows下面一直在用TortoiseSVN做为SVN客户端工具,但它居然没提供Linux版本,无视Linux用户的存在.它视我如空 气,偶视它如废土.开始探索尝试其他跨平台的SVN客户端,最后 ...
- java HTTP请求 DefaultHttpClient is deprecated
最近在使用Apache的httpclient的时候,maven引用了最新版本4.3,发现Idea提示DefaultHttpClient等常用的类已经不推荐使用了,之前在使用4.2.3版本的时候,还没有 ...
- CentOS 6.5搭建Samba服务器
目标需求:在Windows7下访问CentOS 6.5 root用户桌面/ZS文件夹 0.准备工作 关闭防火墙并开启不起动 service iptables stop chkconfig iptabl ...
- Zigbee协议栈OSAL层API函数【转载】
OSAL层提供了很多的API来对整个的协议栈进行管理.主要有下面的几类:信息管理.任务同步.时间管理.中断管理.任务管理.内存管理.电源管理以及非易失存储管理.看到这些管理是不是感 ...
- CvvImage类
从OpenCV 2.2.0开始,OpenCV取消了CvvImage这个类.可是今天要用到,可以自己加入到工程中. 首先,找到CvvImage的原代码.我在网上已经找到了,具体代码如下. 这是CvvIm ...
- SpringMVC+Spring+hibernate整合及分页
1. 新建web project 2. 引入jar, 3. 创建包com.tgb.web.controller, 下面创建包(dao,entity,service, config,spring,hib ...