栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

关于c++使用udp协议传输数据时的字符串转十六进制的问题

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

关于c++使用udp协议传输数据时的字符串转十六进制的问题

这几天公司要求在开发板内置程序,能够给其他机器发协议进行其他操作,结果程序写好后,发送协议字符过去并没有任何操作,而且每个字符都被单独分开了还在前面加了个3,就是下面这种。  然后上网搜了相关的例子和结合自身思考,得出结论。 数字“1”被当做字符存储时,用的ASCII码,值是49(10进制),转化为16进制就是31(3*16^1 + 1*16^0)。
所以,你看到的31其实是字符“1”的16进制数字表示,所以我们要想接收端接收的是16进制的字符,那么我们就需要在发送之前进行字符串转16进制操作。

int str_to_hex(char* oldStr,char* newStr,int len)
{
    int high,low;//两个字符一组
    int count,ii=0;
    for(count = 0;count     {
        high = string[count];
        low = string[count+1];
        if((high>='0')&&(high<='9'))
        {
            high = high - '0';
        }
        else if((high>='a')&&(high<='f'))
        {
            high = high - 'a'+10;
        }
        else if((high>='A')&&(high<='F'))
        {
            high = high - 'A'+10;
        }
        else
        {
            return -1;
        }
        if((low>='0')&&(low<='9'))
        {
            low = low - '0';
        }
        else if((low>='a')&&(low<='f'))
        {
            low = low - 'a'+10;
        }
        else if((low>='A')&&(low<='F'))
        {
            low = low - 'A'+10;
        }
        else
        {
            return -1;
        }
        newStr[ii++] = high<<4 | low;
    }
    return 0; 
}

经过转换后,发送端发送的就是16进制的数啦

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1005011.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号