第一种情况:

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数组转字符串的更多相关文章

  1. php byte数组与字符串转换类

    <?php /** * byte数组与字符串转化类 * @author ZT */ class Bytes { /** * 转换一个string字符串为byte数组 * @param $str ...

  2. Byte数组和字符串相互转换的问题

    第一:需求:将文件转成byte数组,之后转成字符串返回.过滤器接收到响应内容后,需要将响应的内容转成byte数组. 第二:我刚开始的做法: Controller:byteArr = Conversio ...

  3. VB Byte数组转字符串问题

    在c#中,byte转换为字符串的过程中,如果byte的值为0,则转换成字符串时变为’\0’字符,’\0’字符在C#中意味着字符串结束,如果后面再有字符,则读取字符串的程序也不能读取和显示出来. 但是在 ...

  4. byte[] 数组和字符串的转换,与byte[] 数组和int类型的之间的转化

    我们先来看看byte bool  int ushort  等的定义 首先时byte[]数组与string之间的转换 string 转换位byte[] 数组 string str = "1-1 ...

  5. 你的环境有问题吧?--byte数组转字符串的疑惑

    1. 故事背景 小T是个测试MM,小C是个程序猿,今天早上他们又为一个bug吵架了. 小T:“这个显示是bug,在我的浏览器上显示不正确” 小C:“这个bug我不认,在我的电脑上显示正常,是你的环境有 ...

  6. c++中byte数组与字符串的转化

    我们不讨论与字符集有关的内容,只讨论在字节流传递过程中的问题. 我们在做一系统操作时会需要使用到数据流,比如接收网络数据,文件数据,图片数据,原始数据大多是以byte数组的形式提供,与其它语言(c#, ...

  7. 字符串与byte数组转换

    string weclome=""; byte[] data = new byte[1024]; //字符串转byte数组 data = Encoding.ASCII.GetByt ...

  8. 十六进制字符串转化为byte数组

    工作上有这样的需求之前找了好多都不行,好不容易有个可以的赶紧留下来. 原址:http://blog.163.com/roadwalker@126/blog/static/113561841201013 ...

  9. 字符串、十六进制、byte数组互转

    import java.io.ByteArrayOutputStream; public class HexUtil { /** * @param args */ public static void ...

随机推荐

  1. SqlDatasource简单用法

    http://blog.csdn.net/zxf1by1/article/details/7055015 增删改查和前台页面(拖拽过来的,但是包含参数的)

  2. OpenCV —— 矩阵操作

    多通道的矩阵 —— 通道是连续的!! 要将指向该数据类型的指针移动到下一通道,我们只需要将其增加1.如果想访问下一个“像素”或者元素集,则需要一定的偏移量 矩阵的step元素是矩阵中行的长度,单位为字 ...

  3. MVC和MTV设计模式

    1.MVC MVC最初是由施乐公司旗下的帕罗奥多研究中心中的一位研究人员给 smalltalk语言发明的一中软件设计模式. MVC概述:MVC全名是ModelViewController,是模型(mo ...

  4. shell项目-分发系统-构建文件分发系统

    shell项目-分发系统-构建文件分发系统 需求背景对于大公司而言,肯定时不时会有网站或者配置文件更新,而且使用的机器肯定也是好多台,少则几台,多则几十甚至上百台.所以,自动同步文件是至关重要的. 实 ...

  5. C# XML类学习整理(待补)

    一.读取xml文件内容: #region "获取xml文件内容" //将xml文件加载进来 XDocument xdoc = XDocument.Load("F:\\6. ...

  6. ZOJ 3587 Marlon&#39;s String 扩展KMP

    链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3587 题意:给出两个字符串S和T.S,T<=100000.拿出 ...

  7. js31---观察者模式

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/stri ...

  8. win7旗舰版怎么降级到专业版

    一.操作准备及注意事项 1.UltraISO光盘制作工具9.5 2.备份C盘及桌面文件 二.win7旗舰版改成专业版的步骤 1.当前系统为Win7 SP1 64位旗舰版: 2.按Win+R打开运行,输 ...

  9. 洛谷 P1130 红牌

    P1130 红牌 题目描述 某地临时居民想获得长期居住权就必须申请拿到红牌.获得红牌的过程是相当复杂 ,一共包括N个步骤.每一步骤都由政府的某个工作人员负责检查你所提交的材料是否符合条件.为了加快进程 ...

  10. 重排序列 & 拓扑排序

    http://bookshadow.com/weblog/2016/10/30/leetcode-sequence-reconstruction/ 这道题目,检查重排的序列是否一致. 用了拓扑排序. ...