C++ BYTE数组转字符串
第一种情况:
BYTE[0]=Ox12 BYTE[1]=0x34 BYTE[2]=0x56
最后要转换成字符串123456
另外一种情况:
BYTE[0]=Ox12 BYTE[1]=0x34 BYTE[2]=0x50
最后要转换成字符串12345
#include <iostream>
using std::cout;
using std::endl;
typedef char BYTE;
BCDconvert(res_arr, c2_arr, sizeof(c2_arr));
BCDconvert(res_arr, c2_arr, sizeof(c2_arr));
BCDconvert(res_arr, c3_arr, sizeof(c3_arr));
BYTE* BCDconvert(BYTE *cr, BYTE *cl, int cl_len) {
BYTE *cl_end = cl + cl_len;
BYTE *cr_begin = cr;
if (cl_len == 0) return NULL;
for (; cl<cl_end; ++cl) {
*cr++ = 0x30 | ((*cl & 0xF0) >> 4);
*cr++ = 0x30 | *cl & 0x0F;
}
// cr[-1] == 0x30 ? cr[-1] = 0 : cr[0] = 0;
/**/
while (cr > cr_begin && *--cr == 0x30) NULL;
if (cr != cr_begin)
cr[1] = 0;
else return NULL;
/**/
return cr;
}
int main(int argc, char *argv[]) {
BYTE c1_arr[] = {0x12, 0x34, 0x56};
BYTE c2_arr[] = {0x12, 0x34, 0x50};
BYTE c3_arr[] = {0x00, 0x00, 0x00};
BYTE res_arr[32];
if (BCDconvert(res_arr, c1_arr, sizeof(c1_arr)) != NULL)
cout << res_arr << endl;
if (BCDconvert(res_arr, c2_arr, sizeof(c2_arr)) != NULL)
cout << res_arr << endl;
if (BCDconvert(res_arr, c3_arr, sizeof(c3_arr)) != NULL)
cout << res_arr << endl;
return 0;
}
假设是仅仅删除最后一个0,将
cr[-1] == 0x30 ? cr[-1] = 0 : cr[0] = 0;
取消凝视,
另凝视:
/**/
while (cr > cr_begin && *--cr == 0x30) NULL;
if (cr != cr_begin)
cr[1] = 0;
else return NULL;
/**/
将第一个/**/改动为/** /就可以凝视掉!
使用时需先检測返回时,假设返回值不为NULL,即转换正确,假设返回NULL,表示传入的BYTE[]有误,或者全为0(此仅在使用while时才有可能出现).
C++ BYTE数组转字符串的更多相关文章
- php byte数组与字符串转换类
<?php /** * byte数组与字符串转化类 * @author ZT */ class Bytes { /** * 转换一个string字符串为byte数组 * @param $str ...
- Byte数组和字符串相互转换的问题
第一:需求:将文件转成byte数组,之后转成字符串返回.过滤器接收到响应内容后,需要将响应的内容转成byte数组. 第二:我刚开始的做法: Controller:byteArr = Conversio ...
- VB Byte数组转字符串问题
在c#中,byte转换为字符串的过程中,如果byte的值为0,则转换成字符串时变为’\0’字符,’\0’字符在C#中意味着字符串结束,如果后面再有字符,则读取字符串的程序也不能读取和显示出来. 但是在 ...
- byte[] 数组和字符串的转换,与byte[] 数组和int类型的之间的转化
我们先来看看byte bool int ushort 等的定义 首先时byte[]数组与string之间的转换 string 转换位byte[] 数组 string str = "1-1 ...
- 你的环境有问题吧?--byte数组转字符串的疑惑
1. 故事背景 小T是个测试MM,小C是个程序猿,今天早上他们又为一个bug吵架了. 小T:“这个显示是bug,在我的浏览器上显示不正确” 小C:“这个bug我不认,在我的电脑上显示正常,是你的环境有 ...
- c++中byte数组与字符串的转化
我们不讨论与字符集有关的内容,只讨论在字节流传递过程中的问题. 我们在做一系统操作时会需要使用到数据流,比如接收网络数据,文件数据,图片数据,原始数据大多是以byte数组的形式提供,与其它语言(c#, ...
- 字符串与byte数组转换
string weclome=""; byte[] data = new byte[1024]; //字符串转byte数组 data = Encoding.ASCII.GetByt ...
- 十六进制字符串转化为byte数组
工作上有这样的需求之前找了好多都不行,好不容易有个可以的赶紧留下来. 原址:http://blog.163.com/roadwalker@126/blog/static/113561841201013 ...
- 字符串、十六进制、byte数组互转
import java.io.ByteArrayOutputStream; public class HexUtil { /** * @param args */ public static void ...
随机推荐
- CDH版本大数据集群下搭建Avro(hadoop-2.6.0-cdh5.5.4.gz + avro-1.7.6-cdh5.5.4.tar.gz的搭建)
下载地址 http://archive.cloudera.com/cdh5/cdh/5/avro-1.7.6-cdh5.5.4.tar.gz
- 2017国家集训队作业[agc006e]Rotate 3x3
2017国家集训队作业[agc006e]Rotate 3x3 题意: 给你一个\(3*N\)的网格,每次操作选择一个\(3*3\)的网格,旋转\(180^\circ\).问可不可以使每个位置\(( ...
- command---调用指定的指令并执行
command命令调用指定的指令并执行,命令执行时不查询shell函数.command命令只能够执行shell内部的命令. 语法 command(参数) 参数 指令:需要调用的指令及参数. 实例 使用 ...
- C# WPF开源控件库MaterialDesign介绍
介绍 1.由于前端时间萌发开发一个基础架构得WPF框架得想法, 然后考虑到一些界面层元素统一, 然后就无意间在GitHub上发现一个开源WPF UI, 于是下载下来了感觉不错. 官网地址:http:/ ...
- Android程序使用SOAP调用远程WebService服务
在现在的应用程序中.不可能不使用到网络,而且后台一定是有server作为支撑的. 现在最常见的调用方式有HTTP的GET .POST方式,返回JSON或者XML数据. 可是也有一种常见的形式就是调用W ...
- Elasticsearch中JAVA API的使用
1.Elasticsearch中Java API的简介 Elasticsearch 的Java API 提供了非常便捷的方法来索引和查询数据等. 通过添加jar包,不需要编写HTTP层的代码就可以开始 ...
- 一个令人蛋疼的NDK链接错误
背景 我们APP的引擎包engine.so.包括了A.B.C三个project.但每次都是源代码形式编译,导致svn上存在多份同样代码拷贝. 很不科学. ..核心的Bproject由我维护.整个SO编 ...
- Leetcode:signal_number_ii
一. 题目 给一个数组,当中仅仅有一个数出现一次.其它的数都出现3次,请找出这个数.要求时间复杂度是O(n).空间复杂度O(1). 二. 分析 第一次遇见这种题,真心没思路-.前面的s ...
- SSO单点登录学习总结(3)—— 基于CAS实现单点登录实例
第一: 本demo在一个机器上实现(三个虚拟主机),来看SSO单点登录实例(我们可以布到多个机器上使用都是同一个道理的),一个服务器主机,和两个客户端虚拟主机 [html] view plaincop ...
- Android Studio中怎样引用图片资源
随着不断接触Android Studio,越来越发现和Eclipse有着巨大的差别. 不管是表面的目录结构,还是内在对各种资源的管理. 本篇就来聊聊Android Studio中怎样来显示图片. 以及 ...