字符串"270E"如何能转换成十进制?也就9998

tiananmen 2004-09-10 11:48:36
一个字符串如何能转换成十进制数?
比如,,字符串"270E"如何能转换成十六进制?也就9998


问题是这样,SOCKET中收到2个字节的数据,表示了一个整数值,
但是他是十六进制的,并且我用的是char数组保存了这两个字节,
收到的顺序是 0E 27 我想能用什么办法把他直接变成9998
...全文
180 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
tiananmen 2004-09-13
  • 打赏
  • 举报
回复
谢谢大家,不过好象分少了点, 不好意思了。
flyelf 2004-09-11
  • 打赏
  • 举报
回复
sscanf(str,"%x", &val);
jiangfb 2004-09-11
  • 打赏
  • 举报
回复
0x27 * 256 + 0x0e
yintongshun 2004-09-11
  • 打赏
  • 举报
回复
::strtol("270E",&stop,16);
yintongshun 2004-09-11
  • 打赏
  • 举报
回复
用strtol或者strtoul
char *stop=NULL;
long iVal= ::strtol("",&stop,16);
xxedge 2004-09-11
  • 打赏
  • 举报
回复
楼主说的不对:
---------------------------------------------------------
问题是这样,SOCKET中收到2个字节的数据,表示了一个整数值,
但是他是十六进制的,并且我用的是char数组保存了这两个字节,
收到的顺序是 0E 27 我想能用什么办法把他直接变成9998
---------------------------------------------------------
实际上不是字符串吧,两个字节中的值是0e,和27.所以用short类型
来解释这两个字符就可以了。假如你的数组名字是buf
char buf[2];
short *num=(short *)buf;

printf("%d",*num);
就可以得到9998了
sharkhuang 2004-09-11
  • 打赏
  • 举报
回复
sscanf最简单了.
DentistryDoctor 2004-09-11
  • 打赏
  • 举报
回复
sscanf.
whoo 2004-09-11
  • 打赏
  • 举报
回复
strtol, wcstol
aspvbjava 2004-09-11
  • 打赏
  • 举报
回复
char *in = "270E"
int result = 0;
for(int i = 0; i < strlen(in); i++)
{
ch = in[i + 1];
if(ch >= 97 && ch <= 102) //a-z,你修改成a-f
hi = 10 + (ch - 97);
else if(ch >= 65 && ch <= 70) //A-Z,改成A-F
hi = 10 + (ch - 65);
else
hi = atoi(&ch);


result = (result << 4) + hi;
}

上面没有测试,但是基本思路就是这样的,
hellopine 2004-09-11
  • 打赏
  • 举报
回复
0x27 * 256 + 0x0e

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧