Cstring变量怎么转为十六进制和ASC码,在线等

本文介绍了一种将Cstring变量转换为十六进制和ASCII码的方法,通过自定义函数实现了字符串到十六进制的转换,并提供了示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Cstring变量怎么十六进制和ASC码,在线等

在网上搜到一个程序实现了字符串16进制的代码。不是一两个函数就能完的,要自己实现过程:
1/**//**
2  @brief  StrToHex ASCII版本   
3  @param lpSrc  源字符串
4  @param chTag  显示分隔符,默认为0表示空字符
5  @return      返回化后16进制字符串
6*/
7static string StringToHex(LPCSTR lpSrc, char chTag = 0)
8{
9    string strDest;
10    unsigned char* pSrc = (unsigned char*)lpSrc;
11    char  buf[2];
12
13    long dwSize = strlen(lpSrc);
14    for (long dwIndex = 0; dwIndex < dwSize; ++dwIndex)
15    {
16        unsigned char c0 = *pSrc >> 4; 
17        if ( c0 >= 0x0 && c0 <= 0x9)
18        {
19            buf[0] = c0 - 0 + '0';
20        }
21        else
22        {
23            buf[0] = c0 - 10 + 'A';
24        }
25        unsigned char c1 = *pSrc++ & 0x0F;
26        if ( c1 >= 0x0 && c1 <= 0x9)
27        {
28            buf[1] = c1 - 0 + '0';
29        }
30        else
31        {
32            buf[1] = c1 - 10 + 'A';
33        }
34        strDest += buf[0];
35        strDest += buf[1];
36        if (0 != chTag)  strDest += chTag;
37    }
38    return strDest;
39}
40/**//**
41  @brief  StrToHex  UNICODE版本
42  @param lpSrc  源字符串
43  @param chTag  显示分隔符,默认为0表示空字符
44  @return      返回化后16进制字符串
45*/
46static wstring  StringToHex(LPCWSTR lpSrc, wchar_t chTag = 0)
47{
48    wstring strDest;
49    unsigned char* pSrc = (unsigned char*)lpSrc;
50    char  buf[2];
51
52    long dwSize = wcslen(lpSrc) * sizeof(wchar_t);
53    for (long dwIndex = 0; dwIndex < dwSize; ++dwIndex)
54    {
55        unsigned char c0 = *pSrc >> 4; 
56        if ( c0 >= 0x0 && c0 <= 0x9)
57        {
58            buf[0] = c0 - 0 + '0';
59        }
60        else
61        {
62            buf[0] = c0 - 10 + 'A';
63        }
64        unsigned char c1 = *pSrc++ & 0x0F;
65        if ( c1 >= 0x0 && c1 <= 0x9)
66        {
67            buf[1] = c1 - 0 + '0';
68        }
69        else
70        {
71            buf[1] = c1 - 10 + 'A';
72        }
73        strDest += (wchar_t)buf[0];
74        strDest += (wchar_t)buf[1];
75        if (0 != chTag)  strDest += chTag;
76    }
77    return strDest;
78}
79/**//**
80  @def StrToHex
81  *  字符串化为16进制显示   
82*/
83#define  StrToHex    StringToHex
    在应用中需要化时, 只需调用StrToHex宏,示例如下: 

1    string strDest1 = StrToHex("123456789汉字ABCXYZ");
2    string strDest2 = StrToHex("123456789汉字ABCXYZ", ' ');
3    wstring wstrDest1 = StrToHex(L"123456789汉字ABCXYZ");
4    wstring wstrDest2 = StrToHex(L"123456789汉字ABCXYZ", L',');
5
6    TRACE4("%s \n", strDest1.c_str());
7    TRACE4("%s \n", strDest2.c_str());
8    TRACE4(L"%s \n", wstrDest1.c_str());
9    TRACE4(L"%s \n", wstrDest2.c_str());
    结果输出如下:

1313233343536373839BABAD7D641424358595A
231 32 33 34 35 36 37 38 39 BA BA D7 D6 41 42 43 58 59 5A 
3310032003300340035003600370038003900496C575B410042004300580059005A00
431,00,32,00,33,00,34,00,35,00,36,00,37,00,38,00,39,00,49,6C,57,5B,41,00,42,00,43,00,58,00,59,00,5A,00,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值