用一行代码将unsigned char array[4]后两个数转换成unsigned short

请用一行代码将unsigned char array[4]后两个数转换成unsigned short data

2者的效率是差不多的,难道是图个方便?编译器为了效率,unsigned char ,unsigned short实际也分配了4个字节,做按位与运算效率应该蛮高,并且改变为1字节,或8字节对齐都没啥影响,
在4字节方式下下面的代码也可以这样写
mov eax,dword[ebp-8]
and eax,0ffffh
mov dword ptr[ebp-18h],eax
这样写在 对齐方式改变时就会有问题了
不能这样写就换种方式呗,使用movzx反正效率差不多,
仅个人见解...追问

那啥我只是在做题。。给我个答案哥。。。

温馨提示:内容为网友见解,仅供参考
无其他回答

C语言中的unsigned char数组怎么转成unsigned short数组
是的改成0X3272就可以了 用左移和 按位加:( 0x32 << 16) | 0x72 --- 如果涉及 big_endian 和 little_endian 变化,则互换两个字节即可

如何将unsigned short 转换成unsigned char
unsigned short 转换为 unsigned char可以这样转:unsigned short * word;int size= WideCharToMultiByte(CP_ACP,0,word,-1, NULL, 0, NULL,0);char * AsciiBuff =new char[size];WideCharToMultiByte(CP_ACP,0,word,-1,AsciiBuff,size, NULL, 0);

关于unsigned char 型数据转换成十进制或者16进制的问题
unsigned short uiVal; \/\/ VT_UI2. unsigned long ulVal; \/\/ VT_UI4. int intVal; \/\/ VT_INT. unsigned int uintVal; \/\/ VT_UINT. char FAR * pcVal; \/\/ VT_BYREF|VT_I1. unsigned short FAR * puiVal; \/\/ VT_BYREF|VT_UI2. unsigned long FAR * pulVal; \/\/ VT_BYREF|VT_...

C语言中十六进制字符数组转化为字符串
unsigned char s_des[100] = {0};int length = 9;unsigned char s_src[length] = {0xFE,0x01,0x52,0xFF,0xEF,0xBA,0x35,0x90,0xFA};unsigned char IntToHexChar(unsigned char c){ if (c > 9)return (c + 55);else return (c + 0x30);} int main(){ unsigned char ...

c语言中, unsigned char __ar_tip[4];这条语句怎么解释?为什么不写成...
而要怎样把这10代码马上注释起来呢?用"\/\/"或"\/*...*\/"的方法太慢了,我们可以在要注释的第一行前加上#if 0最后一行后加上#endif,这样这10行代码就不会再执行了.因为预编译器发现#if关键字后的条件永远为假(即0),所以一直到#endif之间的语句就不让编译器编译了....

C++ 关于char 类型存储汉字转换为 unsigned short类型问题,急急...
你返回的指针是指向局部变量wBuf的,而局部变量在函数执行完后会销毁,因此你得到的结果一定是非法的。请使用参数传递结果:int CharToString(const char *src, unsigned short* dst);并在外部给dst分配内存。例如:unsigned short wBuf[256];CharToString(“欢迎光临”, wBuf);...

(unsigned short *)()的问题
本文主要讨论的是将整形数据转换为指针类型的问题。其中,memorybase是一个unsigned int类型的整数,而flash_addr是一个unsigned short类型的指针。在编程中,我们遇到的不是简单地将指针视为整数,而是将整数转换为指针的操作。T_Buffer是一个unsigned char类型的数组,其数组中的T_Buffer[1]实际上是一个...

c++ 如何将unsigned short 数组转换成 int 类型?
1、移位相加即可,但是要注意unsigned short类型,需要转换为无符号数据,否则0xe8认为是负数(其实也可以定义时就为unsigned short)。2、例程:include <stdio.h>int main(){ int i, result = 0; unsigned short a[4] = {0x00,0x00,0x03,0xe8};\/\/这里定义成unsigned char,那么下面就不...

怎么将unsigned short数组转换成NSString
C\/C++ code - (id)initWithCharactersNoCopy:(unichar *)characters length:(NSUInteger)length freeWhenDone:(BOOL)freeBuffer; \/* "NoCopy" is a hint *\/ - (id)initWithCharacters:(const unichar *)characters length:(NSUInteger)length;- (id)initWithUTF8String:(const char *)nullTer...

unsigned char a[4] = {0, 0, 0, 1};int b = *((int*)a); 这样执行完 ...
一个整数是4个字节,而unsigned char a[4]也是四个字节,字符串存放顺序是从左至右依次存放,在内存中按字节从地到高,依次是:0 0 0 1 整数也是4个字节,也是从低到高存放,恰好与字符数组占用的地址和大小完全相同,从低到高也是:0 0 0 1,对应的16进制整数就是0X01000000,也就是十进制的...

相似回答