社区
C语言
帖子详情
如何把一个char*中的数据截取出来放到int中
tianlangfeixing
2010-10-29 04:05:39
如:
00 00 00 00 18 00 00 00 08 这9个字节分别从2到5 截取出来放到一个int中,等于24(18转换过来十进制)
从6至9放到另一个int中,变成8
memcpy可以吗??
...全文
272
10
打赏
收藏
如何把一个char*中的数据截取出来放到int中
如: 00 00 00 00 18 00 00 00 08 这9个字节分别从2到5 截取出来放到一个int中,等于24(18转换过来十进制) 从6至9放到另一个int中,变成8 memcpy可以吗??
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
luciferisnotsatan
2010-10-29
打赏
举报
回复
[Quote=引用 7 楼 tianlangfeixing 的回复:]
引用 4 楼 hustleverpi 的回复:
char* p = 你的字符数组。
int i;
memcpy(&i, p + 2, 3);
就得到了你要的东西。
但是,如果你的char*是从网络中获取的,注意转换网络字节序
我的数据是从网络上获取的 怎么转换??
[/Quote]
大头小头问题。不过你这是字符串的话,应该没啥问题。
hustleverpi
2010-10-29
打赏
举报
回复
楼上的不要误人子弟哈~
函数htonl是本地字节序转网络字节序(long类型)
函数ntohl是网络字节转本地直接(long类型)
同理还有htons, ntohs
很好记,h就是host,主机,n就是net,网络。
luciferisnotsatan
2010-10-29
打赏
举报
回复
atoi
tianlangfeixing
2010-10-29
打赏
举报
回复
[Quote=引用 4 楼 hustleverpi 的回复:]
char* p = 你的字符数组。
int i;
memcpy(&i, p + 2, 3);
就得到了你要的东西。
但是,如果你的char*是从网络中获取的,注意转换网络字节序
[/Quote]
我的数据是从网络上获取的 怎么转换??
huhacn
2010-10-29
打赏
举报
回复
char *pcData = "000000001800000008";
char *pcTemp = pcData;
char caArrary[10] = {0};
memcpy(caArrary, pcTemp+2, sizeof(char)*8);
int nTmp = atoi(caArrary);
printf("%d", nTmp);
getchar();
hustleverpi
2010-10-29
打赏
举报
回复
上面错了,
memcpy(&i, p + 1, 4);
hustleverpi
2010-10-29
打赏
举报
回复
char* p = 你的字符数组。
int i;
memcpy(&i, p + 2, 3);
就得到了你要的东西。
但是,如果你的char*是从网络中获取的,注意转换网络字节序
justkk
2010-10-29
打赏
举报
回复
哦,搞错了..
这样试试看
memcpy(&i, s+1, 4);
printf("%d\n", i);
tianlangfeixing
2010-10-29
打赏
举报
回复
[Quote=引用 1 楼 justkk 的回复:]
可以memcpy + atoi
[/Quote]
具体可以说说吗??
justkk
2010-10-29
打赏
举报
回复
可以memcpy + atoi
CString使用技巧,以及与
char
* string之间的转换
一、CString和多种
数据
之间的转换比较 在MFC工程
中
,通常通过控件取得的值都是CString类型。后期要和其他类型的值比较的话转换比较复杂,我们最好将其他类型的值转为CString,再将其比较最好。 (1)
int
、float和double这些数字类型转换为CString字符串 %c 单个字符 %d 十进制整数(i...
C/C++程序
中
数字
int
、字符串string、
char
*之间的转换方法汇总
在写跨平台C/C++程序时,可能会用到数字
int
、字符串string、
char
*之间的转换,下面是一些方法的汇总:
int
atoi (const
char
* str);//字符串转
int
long
int
atol ( const
char
* str );//字符串转long double atof (const
char
* str);//字符串转double
char
*itoa(i...
unsigned
char
和signed
char
型变量的区别,赋值后它在内存
中
的存储形式
在C
中
,默认的基础
数据
类型均为signed,现在我们以
char
为例,说明(signed)
char
与unsigned
char
之间的区别 首先在内存
中
,
char
与unsigned
char
没有什么不同,都是
一个
字节,唯一的区别是,
char
的最高位为符号位,因此
char
能表示-128~127, unsigned
char
没有符号位,因此能表示0~255,这个好理解,8个bit,最多256种情况,
C语言——
char
转
int
& 字符串
截取
Foreword 这周没加班,回家就看丁海寅真是太开心了! 今天看华成英的模电,讲的真好,豁然开朗!从高
中
开始就很讨厌物理从来没听过物理课,考前就靠突击,学一遍忘一遍,最后还是做了电子,是命吧…… 字符串转整形 还是之前的网页项目,因为网页返回给我的是字符串,所以我存进eeprom的也是字符串,可是我在配IP地址等参数的时候需要的是整形,所以需要通过ASCII码将字符串转成整形,代码如下:
int
String2Hex
Int
(
char
*stringValue){
int
len = strlen(
int
和
char
的区别
字符字面值一般是用一对单引号来表示。
char
类型一般就是用字符字面值来初始化、赋值。由于
char
类型的是单字节长度,当给
char
类型的变量用字符字面值赋值时,当单引号里面的内容超过
一个
字节时,系统会自动
截取
一个
字节的内容给
char
变量,忽略其他的字节内容。 比如
char
a=‘1234’;c++会认为单引号里的每
一个
数值都看做
一个
字符字面值,也就是说1 2 3 4各占
一个
字节,‘1234’也就是一共占4个字节,然而
char
变量a只是占
一个
字节,初始化它的值却有4个字节,系统要从’1234’
中
截取
一个
字节的.
C语言
70,040
社区成员
243,237
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章