java byte数组 replace_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;iusLength;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," ");

}

JSon&lowbar;零基础&lowbar;001&lowbar;将布尔类型数组转换为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类型的取值范围的推论&lpar;&ast;零为正数&comma;-128在计算机中的表示方法&period;&period;&period;&rpar;

先看一段推理 +124:0111 1100 -124:1000 0100 +125:0111 1101 -125 ...

Agile PLM 开发中AgileAPI类型对应控制台分类说明

1)    分类中的一级大类PLM后台管理的控制台中,每个分类中的一级大类都对应AgileAPI中一个类型 IServiceRequest对应产品服务请求,表为:psrIPrice对应价格,表为:pr ...

C&num;中byte类型运算

首先看下面一段代码 byte x = 1; byte y = 2; byte z = x + y; Console.WriteLine(z); 可能很多人会说显示结果是3. 其实,这段代码无法运行,因 ...

C&num;中byte&lbrack;&rsqb;类型转换为其它类型

我们这里就举byte[]类型和long类型的转换,其它数据类型用BitConverter类以此类推: /// /// 字节数组转换为long类型 ///

ArcEngine开发中&OpenCurlyDoubleQuote;错误类型&quot&semi;&ast;&ast;&ast;&ast;&quot&semi;未定义构造函数”

from:http://blog.csdn.net/mengdong_zy/article/details/8990593 问题 在ArcEngine开发的时候,在编译时,发现出现这样的错误,出错的地 ...

C&plus;&plus;中的数组array和vector,lambda表达式,C字符串加操作,C&plus;&plus;中新类型数组(数组缓存),多元数组,new缓冲

 使用C++风格的数组.不须要管理内存. array要注意不要溢出,由于它是栈上开辟内存. array适用于不论什么类型 #include #include< ...

随机推荐

Js Pattern - Namespace Pattern

bad code // BEFORE: 5 globals // Warning: antipattern // constructors function Parent() {} function ...

sec&colon;authorize 标签 通过不通过权限例子

1. 方式一         

&lbrack;转&rsqb;python集合set

Python中集合set是基本数据类型的一种,它有可变集合(set)和不可变集合(frozenset)两种.创建集合set.集合set添加.集合删除.交集.并集.差集的操作都是非常实用的方法. 来源网 ...

BZOJ1174&colon; &lbrack;Balkan2007&rsqb;Toponyms

1174: [Balkan2007]Toponyms Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 117  Solved: 16[Submit][S ...

input输入框

7.1,置灰和input框去除置灰 $("#key_SettlementCycle").attr("disabled","disabled" ...

&lbrack;物理学与PDEs&rsqb;第2章习题12 严格凸性的转换

设 $L=L(\xi_0,\xi_1,\cdots,\xi_n)$ 关于变量 $\xi_0>0,\xi_1,\cdots,\xi_n$ 为严格凸的. 证明函数 $$\bex M=\cfrac{1 ...

EDK II之SMM&sol;SMI

SMM:System Managerment Mode SMM有自己的smm core以及dispatcher(可以简单的把smm core跟dxe core看成是平行的存在),smm有自己的运行空间 ...

关于mysql-mybatis批量添加

mybatis怎么实现一次插入多条数据   以后从新浪博客转到博客园这边来记录把.   这篇地址:http://blog.sina.com.cn/s/blog_13e9702640102ysho.ht ...

Java 命名小技巧

存储信息: xxxStorage 映射: xxxMapping 通过参数获取某个对象: getxxxFor 处理器: xxxHanlder handle 检索: xxxretriever 验证器: x ...

iOS 音频开发

音频基础知识 组成 音频文件的组成:文件格式(或者音频容器) + 数据格式(或者音频编码). 文件格式(或音频容器)是用于形容文件本身的格式. 我们可以通过多种不同的方法为真正的音频数据编码.例如 ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值