本文介绍了铸造焦炭短的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
的char *缓冲区;
短NUM;
的memcpy(试验#,缓冲,sizeof的(短));
*缓冲区
- 指针到缓冲区,其中一些位于十六进制查看。
我希望把这个数字在变量 NUM
无需调用的memcpy
。
我该怎么办呢?
数=(短)的缓冲; //不行!
解决方案
有关两字节的短:
数=(短)(
((无符号字符)缓冲器[0])LT;< 8 |
((无符号字符)缓冲[1])
);
有关不同的短:
的for(int i = 0; I<的sizeof(短);我++)
数=(数字<< 8)+((unsigned char型)缓冲器[I]);
或你必须为每个大小一些宏。
另外,查看有关此作出有关字节序的假设tristopia的评论。
char *buffer;
short num;
memcpy(&num, buffer, sizeof(short));
*buffer
- pointer to the buffer, where number is situated in HEX view.I want to put this number in the variable num
without calling memcpy
. How can I do it?
number = (short) buffer; //DOESN'T work!
解决方案
For two byte short:
number = (short)(
((unsigned char)buffer[0]) << 8 |
((unsigned char)buffer[1])
);
For different short:
for (int i = 0; i < sizeof(short); i++)
number = (number << 8) + ((unsigned char) buffer[i]);
or you'll have some macros for each size.
Also, see tristopia's comment about this making assumptions about endianness.
这篇关于铸造焦炭短的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!