用C++实现字符串与16进制字符串之间的转换,就是说,C++中的string类型的任意字符串转换成16进制表示的string类型的字符串,反之亦然。应该是将string中的每一个字符转换成相应的ascii码值,再把所有的16进制的ascii码值用字符串的形式联系起来。跪求代码!!!
staticintstr_to_hex(char*string,unsignedchar*cbuf,intlen)
{
BYTEhigh,low;
intidx,ii=0;
for(idx=0;idx<len;idx+=2)
{
high=string[idx];
low=string[idx+1];
if(high>='0'&&high<='9')
high=high-'0';
elseif(high>='A'&&high<='F')
high=high-'A'+10;
elseif(high>='a'&&high<='f')
high=high-'a'+10;
else
return-1;
if(low>='0'&&low<='9')
low=low-'0';
elseif(low>='A'&&low<='F')
low=low-'A'+10;
elseif(low>='a'&&low<='f')
low=low-'a'+10;
else
return-1;
cbuf[ii++]=high<<4|low;
}
return0;
}
/****************************************************************************
函数名称:hex_to_str
函数功能:十六进制转字符串
输入参数:ptr字符串buf十六进制len十六进制字符串的长度。
输出参数:无
*****************************************************************************/
staticvoidhex_to_str(char*ptr,unsignedchar*buf,intlen)
{
for(inti=0;i<len;i++)
{
sprintf(ptr,"%02x",buf[i]);
ptr+=2;
}
}
扩展资料
byte数组转十六进制字符串
publicstaticStringbyteArraytoHexString(byte[]b){
intiLen=b.length;
StringBuffersb=newStringBuffer(iLen*2);
for(inti=0;i<iLen;i++){
intintTmp=b[i];
while(intTmp<0){
intTmp=intTmp+256;
}
if(intTmp<16){
sb.append("0");
}
sb.append(Integer.toString(intTmp,16));
}
returnsb.toString().toUpperCase();
}
自定义的函数的参量和返回值都是string类型的才行啊,你写的返回值不对啊
追答#include
std::string hex_to_str(const std::vector& vec)
{
std::ostringstream oss;
oss << std::setw(2) << std::setfill('0') << std::hex;
for (auto iter = vec.begin(); iter != vec.end(); ++iter) {
oss << *iter;
}
return oss.str();
}
C++ 字符串与16进制字符串之间的转换
函数名称:hex_to_str 函数功能:十六进制转字符串 输入参数:ptr字符串buf十六进制len十六进制字符串的长度。输出参数:无 \/ staticvoidhex_to_str(char*ptr,unsignedchar*buf,intlen){ for(inti=0;i<len;i++){ sprintf(ptr,"%02x",buf[i]);ptr+=2;} } ...
C++,16进制转化问题,字符串转化成数字
char *str;int i = (int)strtol(p, &str, 16);\/\/十六进制 printf("%d\\n",i);return 0;} 主要用到strtol这个库函数,它的使用方法是:函数名: strtol 功 能: 将串转换为长整数 用 法: long strtol(char *str, char **endptr, int base);\/\/base指明我们要转换为几进制数 参考资...
c++ 字符串转换十六进制
给你个思路:<stdlib.h>头文件里,有什么字符串转整数,整数转字符串之类的。用atoi()把字符串转成整数n 然后cout<<hex<<n<<endl;这就是16进制显示n的值。。如果还想转成字符串形式储存起来,可以用sprintf函数 或者c++的 <sstream>里的ostringstream类,申请一个对象,把显示结果存入某字符串 ...
C++怎么吧十六进制字符串转为相应的二进制字符串,比如“FF”转为对 ...
int x,n,ss[256];char s[256];n=0; x=0x0af;while ( x ) { ss[n]=x%2; x\/=2; n++; } for ( i=0;i<n;i++ ) s[n-i-1]=ss[i]+'0';s[n]=0;至此,字符串s中存储了x的二进制表示字符串。
C++字符串转16进制数
估计你要的是这个吧 int i = 0x00;char ch[]="test";\/*ch不要填写成员数量*\/ for (i = 0x00; i < sizeof(ch); i++){ printf("0x%02X,", ch[i]);} 输出为:0x74,0x65,0x73,0x74,0x00,sizeof(ch)也可以改为strlen(ch),这样就没有最后的0x00了。
c++怎么把16进制字符串转换成16进制数
= NULL) { size_t uiLength = strlen(lpSrcStr); if (uiLength % 2 == 0) { size_t i = 0; size_t n = 0; while (*lpSrcStr != 0 && (n = ((i++) >> 1)) < *lpRetSize) { lpRetBytes[n] <<= 4; if (*lpSrcStr >= TEXT('0') && ...
c++ 字符串转换16进制
include <iostream>#include <string>#include <cstdio>#include <sstream>using namespace std;std::string char2hex(std::string const &s){std::string ret;for (unsigned i = 0; i != s.size(); ++i){char hex[5];sprintf(hex, "%#.2x ", (unsigned char)s[i]);ret += hex...
C++中怎样把十六进制数据赋到字符串的内存?
16进制数据仅是整数的一种表现形式,把十六进制数据赋到字符串的内存,就是把一个整数写到内存地址中,可采用的最简单的办法就是用memcpy()函数。 相关头文件: #include <string.h> 函数原型: void * memcpy( void *dest, void * src, size_t len ); dest:目标地址 src:数据源所在地址 len:拷贝的数据长度...
c++,中怎么样将字符串,转化为十六进制?? 用什么函数??
你是要把字符串以16进制的形式打印出来吗?下面可以实现:char c[] = "abcdefg123456";char *p = c;for(int i=0; c[i]!='\\0'; i++) { printf("%lx", *(p++)); \/\/将字符以16进制的形式显示 if(i%4 == 3) printf(" ");} ...
大哥大姐来帮忙啊!c++ 输入一个整数,转化成16进制的字符串 不用任何函...
void convert(int num);const max=16;int main(){ int x;do { cout<<"请输入一个数:";cin>>x;convert(x);}while(x!=0);return 0;} void convert(int num){ char a[max];int length=0;while(num>0){ int temp=num%16;\/\/put mod into array num=num\/16;switch(temp){ case...