本文介绍了铸造焦炭短的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

 的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.

这篇关于铸造焦炭短的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-15 02:15