欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

关于c++16进制字符串与ASCII字符串的相互转换

程序员文章站 2024-03-18 18:20:10
...

最近在通过SOCKET模拟一个客户端,利用多线程发送心跳包和接受服务端的发过来的数据并进行处理回复。在进制转换上弄得很无奈,现在解决了

//普通字符串转换程16进制字符串
int str2hexstr(string &str){
        char chars[20] = "0123456789ABCDEF";
        char ll[255];
        int n;
        for(int i=0;i<str.length();i++){
            int kk=(int)str[i];
            n=(kk&0xf0)>>4;
            ll[2*i]=chars[n];
            n=kk&0x0f;
            ll[2*i+1]=chars[n];
        }
        cout<<"========="<<ll<<endl;
    return 1;
}
//16进制字符串转换普通字符串
string hexStringToString(string& hexStr)
{
    cout<<"要转换的数据是"<<hexStr<<endl;
	string ret;
	char asd[255];
	int n;
	string hexString = "0123456789abcdef";
	for(int i=0;i<hexStr.length()/2;i++){
        n=hexString.find(hexStr.at(2*i))*16+hexString.find(hexStr.at(2*i+1));
        ret.insert(i,1,(char)n);
	}
	return ret;
}

关于string类型还是char*或char[]自行琢磨进行改动。。。。。。