C++开发中BYTE类型数组转为对应的字符串
下午密码键盘返回了一个校验码,是BYTE类型数组,给上层应用返回最好是字符串方式,怎样原样的将BYTE数组转为string串呢?不多说,开动脑筋上手干!!!
BYTE格式的数组bt{08,D7,B4,FB},如何转换为字符串样式 (str = "08 D7 B4 FB") 呢?
其实在BYTE数组中存放的值是bt{8,215,180,251}这样,下面开始转字符串。
1、先对数组元素进行除数为16的取余和取模(这样215就会变成13和7,是不是看到16进制的值了呀)
商v 模m
取bt[0],bt[0]/16=0,bt[0]%16=8
取bt[1],bt[1]/16=13,bt[0]%16=7
取bt[2],bt[2]/16=11,bt[0]%16=4
取bt[3],bt[3]/16=15,bt[0]%16=11
2、数值转ASCII
16进制的第一位
判断v>=0&&v<=9,则v+=48 //数字转换
else v>=97&&v<=122 则v+87 //小写字母转换
else v+55 //大写字母转换
16进制第二位
判断m>=0&&m<=9,则m+=48 //数字转换
else m>=97&&m<=122 则m+87 //小写字母转换
else m+55 //大写字母转换
3、将对应的char(v)+char(m)合并为一个字符串即可
代码
1、循环执行取余和取模
int v = (*(lpxKVC->lpbData+i))/16;
int m = (*(lpxKVC->lpbData+i))%(16);
执行完成
v=0,m=8
v=13,m=7
v=11,m=4
v=15,m=11
2、将得到的v和m转换为对应的ASCII码
if(v>=0&&v<=9) {v+=48;}
else if( v>=97&&v<=122) {v=v+87;}
else {v=v+55;}
if(m>=0&&m<=9) {m+=48;}
else if( m>=97&&m<=122) {m=m+87;}
else {m=m+55;}
执行完成
v=48,m=56
v=68,m=55
v=66,m=52
v=70,m=66
3、循环ASCII类型转换为char
char vChar = (char)v; //ASCII转字符
char mChar = (char)m;
执行完成
vChar=0,mChar=8
Char=D,mChar=7
vChar=B,mChar=4
vChar=F,mChar=B
4、将字符合并为字符串
char strKVCTmp[3]={vChar,mChar};
strKVC += strcat(strKVCTmp," ");
执行完成
08 D7 B4 FB
完整代码:
CString strKVC="";
for(int i=0;i<lpxCryptData->usLength;i++)
{
int v = (*(lpxCryptData->lpbData+i))/16; //取除数(前面一位)
int m = (*(lpxCryptData->lpbData+i))%(16); //取模(后面一位)
//前面一位转char
if(v>=0&&v<=9) {v+=48;} //数字转ASCII
else if( v>=97&&v<=122) {v=v+87;} //小写字母转ASCII
else {v=v+55;} //大写字母转ASCII
char vChar = (char)v; //ASCII码转为char类型
//后面一位转char
if(m>=0&&m<=9) {m+=48;}
else if( m>=97&&m<=122) {m=m+87;}
else {m=m+55;}
char mChar = (char)m;
//两位char合并为一个字符串
char strKVCTmp[3]={vChar,mChar}; //char字符合并成string
strKVC += strcat(strKVCTmp," ");
}
C++开发中BYTE类型数组转为对应的字符串的更多相关文章
- JSon_零基础_001_将布尔类型数组转换为JSon格式字符串,返回给界面
将布尔类型数组转换为JSon格式字符串,返回给界面 需要导入包: 编写bean: package com.west.webcourse.po; /** * 第01步:编写bean类, * 下一步com ...
- java中的lis数组转为json数据
第一个想到的办法就是 javascript中的replace 也就是先将list数组转为 字符串再对 字符串 replace 但是万万没想到javascript的replace函数在替换数据时, 默 ...
- Java 中 byte 类型初始化问题
很早的时候由于工作需要,接触过一点 Java,于是有了这个坑,今天回头看到自己在 Stackoverflow 上提的问题发现了它,于是再记录下. 在使用中,需要将 byte 类型的的每一位都置 1.我 ...
- 关于JAVA中Byte类型的取值范围的推论(*零为正数,-128在计算机中的表示方法...)
先看一段推理<*一切都是在8个比特位的前提下,讨论二进制的符号位,溢出等等,才有意义*> +124:0111 1100 -124:1000 0100 +125:0111 1101 -125 ...
- Agile PLM 开发中AgileAPI类型对应控制台分类说明
1) 分类中的一级大类PLM后台管理的控制台中,每个分类中的一级大类都对应AgileAPI中一个类型 IServiceRequest对应产品服务请求,表为:psrIPrice对应价格,表为:pr ...
- C#中byte类型运算
首先看下面一段代码 byte x = 1; byte y = 2; byte z = x + y; Console.WriteLine(z); 可能很多人会说显示结果是3. 其实,这段代码无法运行,因 ...
- Java中Byte类型数据在运算中的问题
比如: byte a=1; byte b=2; byte c; c=a+b; //这样是计算不出c,是错误的 c=a+1; //这样也是不能计算c的 c=64+1; //为什么这样就能计算c,在Jav ...
- C#中byte[]类型转换为其它类型
我们这里就举byte[]类型和long类型的转换,其它数据类型用BitConverter类以此类推: /// <summary> /// 字节数组转换为long类型 /// </su ...
- ArcEngine开发中“错误类型"****"未定义构造函数”
from:http://blog.csdn.net/mengdong_zy/article/details/8990593 问题 在ArcEngine开发的时候,在编译时,发现出现这样的错误,出错的地 ...
随机推荐
- 海量数据挖掘MMDS week7: 相似项的发现:面向高相似度的方法
http://blog.csdn.net/pipisorry/article/details/49742907 海量数据挖掘Mining Massive Datasets(MMDs) -Jure Le ...
- ROS_Kinetic_11 ROS程序基础Eclipse_C++(二)
ROS_Kinetic_11 ROS程序基础Eclipse_C++(二) 编写简单的Service和Client (C++): http://wiki.ros.org/cn/ROS/Tutorials ...
- 05_学生管理系统,xml读写,布局的综合应用
最终要做的项目目标: 2.编写Android清单文件AndroidManifest.xml <?xml version="1.0" encoding="utf ...
- thinkpad x260在ubuntu 14.04lts wifi驱动安装 ( ubuntu iwlwifi驱动 都可行 )
实验室要新购笔记本x260,用于ROS调试,装上ubuntu-ros后,发现wifi不支持. 查阅大量资料,如下: http://www.ubuntu.com/certification/hardwa ...
- python的read() 、readline()、readlines()、xreadlines()
先来一个小例子: import sys dir= os.path.dirname(os.path.abspath(__file__)) file_path='%s/test.txt' % dir f ...
- close()方法应该在finally语句中调用吗?
翻译人员: 铁锚 翻译时间: 2013年12月20日 原文链接: Should .close() be put in finally block or not? 下面列出了关闭输出流(output w ...
- 【Unity插件】LitJson杂谈
距离上一次更新博客已有一段时间了,一实习就懒了,嘿嘿.这次谈一下在实习里新碰到的一个Unity插件--LitJson(也可以去官网下载最新版). 开场白 LitJson是一个开源项目,比较小巧轻便,安 ...
- Android 自定义view --圆形百分比(进度条)
转载请注明出处:http://blog.csdn.net/wingichoy/article/details/50334595 注:本文由于是在学习过程中写的,存在大量问题(overdraw onDr ...
- OpenCV特征点提取----Fast特征
1.FAST(featuresfrom accelerated segment test)算法 http://blog.csdn.net/yang_xian521/article/details/74 ...
- Vim/Vi常用操作(第二版)
周围同事不是用vim就是Emacs,你要是用一ultraedit,你都不好意思跟人家打招呼;什么插件呀,语法高亮呀,拼写检查呀,能给它开的都给它开着,就是一个字儿:酷. 你说这么牛B一东西,怎么着学会 ...