2014-07-20 47 views
1

我正在用这种方法读取midi pitchwheel消息(从这里开始http://www.blitter.com/~russtopia/MIDI/~jglatt/tech/midispec/wheel.htm),它将2个十六进制字节组合成一个14位无符号短路。它工作得很好,但现在我试图发送需要以2字节十六进制格式存储的轮询消息。有谁知道如何反转此方法,以便它将采用像12401这样的整数并返回两个字节?任何人都可以改变这种方法吗?

unsigned short CombineBytes(unsigned char First, unsigned char Second) 
{ 
    unsigned short _14bit; 
    _14bit = (unsigned short)Second; 
    _14bit <<= 7; 
    _14bit |= (unsigned short)First; 
    return(_14bit); 
} 

这是我的坏尝试:

unsigned char CreateBytes(unsigned short value) 
{ 
    unsigned char First; 
    unsigned char Second; 
    unsigned char FullValue; 

    FullValue = (unsigned short)value; 
    First = FullValue; 
    First >>= 7; 
    Second |= (unsigned short) value; 
    return(First, Second); 
} 
+0

显示你的尝试。我们在这里帮助,而不是为你做你的工作。 – rmaddy

回答

2
first = (combined & 0x3f80) >> 7; // 0b11111110000000 
second = (combined & 0x007f);  // 0b00000001111111 
+2

这并不解决从函数返回两个值的尝试。 – rmaddy

相关问题