C++ BYTE数组转字符串

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ BYTE数组转字符串相关的知识,希望对你有一定的参考价值。

比如:
第一种情况:
BYTE[0]=Ox12 BYTE[1]=0x34 BYTE[2]=0x56

最后要转换成字符串123456

第二种情况:
BYTE[0]=Ox12 BYTE[1]=0x34 BYTE[2]=0x50

最后要转换成字符串12345
****/******

参考技术A #include<stdio.h>
fun(byte x, int* a, int* b)

*a = x / 0x10;
*b = x % 0x10;

main()

int i, a, b;
char output[256] = "";
byte x[] = 0x12, 0x34, 0x56;
for (i = 0; i < 3; i++)

fun(x[i], &a, &b);
sprintf(output, "%s%d", output, a);
if (i == 3 && b == 0)
break;
else
sprintf(output, "%s%d", output, b);



已经改好了
参考技术B 如下:
#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时才有可能出现).本回答被提问者和网友采纳

netty bytebuf怎么转成byte数组

ByteBuf buf = (ByteBuf)msg;
byte[] req = new byte[buf.readableBytes()];
buf.readBytes(req);
String body = new String(req,"UTF-8");
参考技术A byte[] bytes = ByteBufUtil.getBytes(byteBuf);
ByteBufUtil,netty自带的工具类.

以上是关于C++ BYTE数组转字符串的主要内容,如果未能解决你的问题,请参考以下文章

android 字符串转byte数组

java里面byte数组和String字符串怎么转换

c# byte数组转string

netty bytebuf怎么转成byte数组

java里面byte数组和String字符串怎么转换

如何将16进制 转换byte数组