我正在尝试用C编写一个算法,该算法应该操纵一个词词。

假设我们有一个这样的单词:

WORD testStart = 0x000;


现在我需要增加值以达到0xFFF。但是我需要将最后一个字节从00增加到FF,并将第一个半字节从0增加到F。

有没有办法达到这个结果?

我对C语言不是很熟练,并且我已经注意到,对于整数,我可以使用“ ++”运算符,但是如果这样做的话:

test+=125;


它无法正常工作...

重新封底:

WORD testStart,testEnd;

testStart = 0x000;
testEnd = 0xFFF;

while(1){
             if(testStart < testEnd ){
                     if(testStart%25==0)
                     testStart+=0x7D; //If byte is multiple of 25 I want to add 1 to the nibble value
                     else
                     testStart++;  //else just add 1 to byte
             }

}


谢谢!

最佳答案

您可以将WORD分为两个变量,例如:

WORD x = 0xFF;
WORD y = 0xF;


然后通过编写以下代码来构造结果:

WORD z;
z = x + (y << 8);


如果我对您的理解正确,那么您正在寻找以下内容:

WORD testStart, testEnd, byte, nibble; //replace with names of your liking

testEnd = 0xFFF;
byte = 0x00;
nibble = 0x0;


while(1){
             testStart = byte + (nibble << 8);
             if(testStart < testEnd )
             {
                     if(byte == 0xFF)
                     {
                       nibble++;
                     }
                     else //byte is not 0xFF
                     {
                       byte++;
                     }
             }

}

08-03 22:17