我试图在C中写下一个应该操纵一个双语的WORD的算法。
我们说我们有这样的词:
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
}
}
谢谢!
答案 0 :(得分:1)
你可以把那个WORD分成两个变量,让我们说:
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++;
}
}
}
如果我理解正确,你正在寻找:
<tr>
答案 1 :(得分:0)
您应该能够执行以下操作:
WORD x = 0xFF;
WORD y = 0xF;