一个算法题:BYTE[0]=Ox12 BYTE[1]=0x34 BYTE[2]=0x56 最后要转换成字符串123456
2011-01-19 23:16
274 查看
俺偷懒了
准确的算法是
// byte2char.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" typedef unsigned char BYTE; BYTE data[]={ 0x12,0x34,0x56 }; int _tmain(int argc, _TCHAR* argv[]) { char tmp[64]={0}; for (int i=0;i<sizeof(data)/sizeof(BYTE);i++) { char s[12]; itoa(data[i],s,16); strcat(tmp,s); } printf("%s/n",tmp); system("pause"); return 0; }
准确的算法是
#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时才有可能出现).
相关文章推荐
- 汉字字符串转换成十六进制byte数组,一个汉字存到两个byte里面,大整数存到两个byte里面
- 一个整数转换成字符串(C/C++自己写的算法)
- byte[]转换成16进制字符串的高效方法或算法
- 每日一道算法题:输入一个表示整数的字符串,把该字符串转换成整数并输出
- byte[]转换成16进制字符串的高效方法或算法
- 一个我写的通用的很慢的整数转换为字符串的算法,哈哈
- 数据结构——算法之(008)( 输入一个表示整数的字符串,把该字符串转换成整数并输出)
- 算法题:输入一个表示整数的字符串,把该字符串转换成整数并输出。例如输入字符串“12345”,则输出整数“12345”
- 二者都是将 byte[] 转换成字符串,一个区别在于 Convert.ToBase64String 使用 base 64 数字编码,所以它生成的全部是 ASCII 字符。
- 算法:将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。
- 微软算法100道题-----输入一个表示整数的字符串,把该字符串转换成整数并输出
- 实现简易字符串压缩算法:一个长度最大为128的字符串, 由字母a-z或者A-Z组成,将其中连续出现2次以上(含2次)的字母转换为字母和出现次数,以达到压缩目的
- 将一个BYTE数组转换成16进制字符串和10进制字符串格式
- 每天学习一算法系列(20)(输入一个表示整数的字符串,把该字符串转换成整数并输出)
- 面试算法(四十九)把字符串转换为整数
- 字符串string和内存流MemoryStream及比特数组byte[]互转比转换
- 将一个整数n转换成换成一个字符串。如将1234转换为"1234"。
- 用递归法将一个整数n转换成字符串。
- 字符串与byte[]之间的转换
- 请设计一个算法,给一个字符串进行二进制编码,使得编码后字符串的长度最短。