请问如何将一个高8位的byte和低8位的byte还原成一个int型?

aaaaer 发布于 2016/05/29 14:37
阅读 339
收藏 0

请问如何将一个高8位的byte和低8位的byte还原成一个16位有符号的int?

例如low=180,高=10

加载中
0
凯特利
凯特利
直接或就能求得
aaaaer
aaaaer
不知道怎么写啊? result=low | high ?这样吗?
0
凯特利
凯特利
这样不会得到你想要结果 
aaaaer
aaaaer
是的,我也觉得不对。能帮我示范一下么?
0
凯特利
凯特利
class Program
    {
        static void Main(string[] args)
        {
            byte b1 = 0xeb;
            byte b2 = 0x1f;
 
            UInt16 val = Convert.ToUInt16((b1 << 8) + b2);
            Console.WriteLine((Int16)val);
            Console.WriteLine(val.ToString("X"));
            Console.ReadKey();
        }
    }
aaaaer
aaaaer
谢谢你,我还是把基础理论掌握一下才行
0
yanxicheung
yanxicheung
high<<8+low或者这样high<<8 | low,都一样的
0
yanxicheung
yanxicheung
嵌入式里面经常有这样的问题
0
凯特利
凯特利

刚才回答有误 更正

int bytesToInt(byte* bytes,int size = 4) 

{
    int addr = bytes[0] & 0xFF;
    addr |= ((bytes[1] << 8) & 0xFF00);
    addr |= ((bytes[2] << 16) & 0xFF0000);
    addr |= ((bytes[3] << 24) & 0xFF000000);
    return addr;
 }
0
凯特利
凯特利

翻过来 int TO byte

void  intToByte(int i,byte *bytes,int size = 4)

{
     //byte[] bytes = new byte[4];
    memset(bytes,0,sizeof(byte) *  size);
    bytes[0] = (byte) (0xff & i);
    bytes[1] = (byte) ((0xff00 & i) >> 8);
    bytes[2] = (byte) ((0xff0000 & i) >> 16);
    bytes[3] = (byte) ((0xff000000 & i) >> 24);
    return ;
 }

0
BG5TWC
BG5TWC

#include<stdio.h>

int main(){

 int ah = 10;

 int al = 180;

 int result = 0;

 result = (ah<<8)|al;

 printf("%d\n",result);

}

凯特利
凯特利
回答的太简洁了,赞一个
返回顶部
顶部