unsigned char [] 和 CString互相转换

78 篇文章 2 订阅
C/C++ code
?
1
2
#include <stdio.h>
#include <tchar.h>

unsigned char [] 转为 CString
C/C++ code
?
1
2
3
4
5
6
7
8
9
unsigned  char  temp[] = { 0x01, 0xC2, 0x24, 0x80, 0x32, 0x00, 0x00, 0x19, 0x00, 0x00 };
TCHAR  sz[2] = { 0 };
CString str;   
for  ( int  i = 0; i <  sizeof (temp) /  sizeof (temp[0]); i++)
{
     _stprintf(sz, TEXT( "%02X" ), temp[i]);
     str += sz;
}
cout << str << endl;


CString 转为 unsigned char []
C/C++ code
?
1
2
3
4
5
6
7
8
9
10
11
CString str =  "01C22480320000190000" ;
unsigned  char  temp2[10];
TCHAR  sz2[3] = { 0 };
int  nLen = str.GetLength() / 2;
for  ( int  j = 0; j < nLen; j++)
{
     sz2[0] = str[j * 2];
     sz2[1] = str[j * 2 + 1];
 
     _stscanf(sz2, TEXT( "%2X" ), &temp2[j]);
}
  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 将unsigned char转换为cstring可以使用以下方法: 1.使用strcpy函数将unsigned char数组复制到cstring数组中。 2.使用sprintf函数将unsigned char数组格式化为cstring数组。 3.使用循环遍历unsigned char数组并将每个元素转换为对应的字符,然后将它们连接成一个cstring数组。 例如,以下是第一种方法的示例代码: unsigned char uc[] = {x48, x65, x6c, x6c, x6f}; char cstr[6]; strcpy(cstr, (char*)uc); 在这个例子中,我们将unsigned char数组uc复制到char数组cstr中,然后将其转换为cstring。 ### 回答2: 首先需要明确一点,unsigned char和字符串是不同的数据类型。unsigned char是无符号字符型,范围是0-255,而字符串是由多个字符组成的序列,以NULL字符结尾('\0')。 如果要将unsigned char类型的数据转换成字符串,可以使用sprintf函数。sprintf函数的第一个参数为要存储结果的字符数组,第二个参数为格式化字符串,后面的参数为要转换的变量。例如: ``` unsigned char c = 65; char str[2]; sprintf(str, "%c", c); ``` 这样就可以将c的ASCII码65转换成字符'A',并存储在str中。 需要注意的是,由于unsigned char的范围是0-255,如果要将其转换成字符串,需要保证其范围在可打印字符的范围内,否则转换后的字符串可能会出现乱码。 另外,在使用sprintf函数时,需要保证目标字符数组有足够的空间来存储转换后的结果,否则可能会出现越界访问的错误。 综上所述,将unsigned char转换成字符串的方法是使用sprintf函数来进行格式化输出。 ### 回答3: unsigned char是一种数据类型,它表示0~255之间的整数,而cstring是一种字符串类型,它由多个字符组成,并以'\0'结尾。 要将unsigned char转换为cstring,首先需要将unsigned char转换char类型的字符,然后将这些字符组成一个字符串。可以使用sprintf函数来实现这一过程。 sprintf函数的头文件是<stdio.h>,它有三个参数,第一个参数是字符串变量,第二个参数是格式化字符串,第三个参数是要格式化的值。例如,可以使用以下代码将一个unsigned char数组转换为cstring: ``` unsigned char ucArr[] = {0x41, 0x42, 0x43, 0x44, 0x45}; char cStr[10]; sprintf(cStr, "%s", ucArr); ``` 在上面的代码中,首先定义了一个unsigned char数组ucArr,它包含了5个ASCII码值,分别是A、B、C、D、E的十六进制表示。然后定义了一个长度为10的char数组cStr,用于存储转换后的字符串。最后使用sprintf函数将ucArr转换为字符串,并将结果存储在cStr中。 需要注意的是,如果unsigned char数组中包含了'\0'字符,那么sprintf函数将在该字符处停止,所转换的字符串长度可能会比实际长度少。因此,在将unsigned char数组转换为cstring时需要特别注意。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值