Cypress技术william hill官网
直播中

周彦楠

7年用户 222经验值
私信 关注
[问答]

8字节的数组转换为UIT64生成的代码不起作用

在创建者3中,我遇到了一个令人沮丧的基本数学问题。我有一个函数,它采用一个字节值为8字节的数组,并将其转换为UIT64。非常直接,除了生成的代码实际上不起作用。我尝试过多种方法(从明显的解决方案到超长的手)。我验证了数组指针是通过的,我可以从函数中访问数组中的数据,但是我不能操纵数据。我终于把整个问题分解成尽可能简单的解决方案(希望编译器不能理解我的意图)。这里是生成的代码(并且它不起作用)。
UtiN 64 Type Type转换到UnTunay-TyAuUTIN 64(UTIN 8*输入){//这假设一个数据发送在小EntIn格式UTIT32 TimeTyLO=0;UTIT32 TimeTyHi=0;UTIT64温度;TuntHyHi=(((UTIT32)输入[7)]和lt;24);TimeTHYHI=(((UTIT32)输入[6)] & lt;16);TimeTHYHI=(((UIT32)输入[5 ])& lt;=(((UTIT32)输入[3 ])<lt;24);TimeTurbo=(((UTIT32)输入[2)] & lt;16);TimeTurbo=(((UTIT32)输入[1)]和lt;8);TimeTurbo=(((UTIT32)输入[0)]和lt;0);TEMP=(UTIN 64)TimeTHI;TEMP= TAMP & LT;;32;TEMPP=TwitsLo;返回。8);TwitthHi=(((UTIT32)输入〔4〕)& lt;lt;0);(临时);
在所有这些工作之后,TuntHyHi和TimeStLo都有正确的值,但是我不能把TimeHyHi物理地分配给TEMP!这样的任务怎么办?我总能挣到0亿英镑。因此,任何持续的观点都是不现实的。
有人有什么建议吗?

回帖(3)

周彦楠

2019-9-9 13:35:14
这里有一个更新。我把它倒了一点,这样我就可以一次把64位变量的值移8位(见代码)。有趣的是,当我移动最后的8位(以获得32位的完全移位)时,变量零值。
UIT64 64型Type转换程序UntIAYAYTAUUTIN 64(UTIN 8*输入){//这假设一个发送数据在小EntIn格式UTIT32 TimeTyLO=0;UTIT32 TimeTyHi=0;UTIT64 TAMP=0xFFFFFFFFFFFFFFFF;/UTIN 64临时;TimeTyHi=(((UTIT32)输入[7 ])& lt;24);TimeTHYHI=(((UTIT32)输入[6)] & lt;16);TEM;“输入〔4〕〕& lt;0);TimeTurbo=(((UTIT32)输入[3)] & lt;24);TimeTurbo=(((UTIT32)输入[2)]和lt;16);TimeTurbo=(((UTIT32)输入[1)]和lt;8);TimeTurbo=(((UTIT32)输入[0)]和lt;0);TEMP=(UIT64)TimeTHI;TEMP=温度PHIHI==((UIT32)输入〔5〕& lt;8);TimeTHYHI=((UTIT32)<lt;8;TEMPP=TAMP & lt;8;TAMP=TEMP<& lt;8;/ /最后8位移位失败…TEMP获得0x00 000 000亿兆Timp=TwitsLo;返回(TEMP);}
举报

胡卫伟

2019-9-9 13:53:00
我现在不在开发PC附近。我敢肯定你是在与C/C转换特质战斗。
你需要更多的UTI64铸件IMHO。
我明天会想出一个解决方案,另外我会使用一个联合/铸造解决方案。我也会演示一下。
预计起飞时间
举报

王琳

2019-9-9 14:05:00
在继续任何进一步的测试之前:请注意,在显示64位变量时存在已知的调试程序缺陷。我建议您检查内存位置以查看存储的值。
鲍勃
举报

更多回帖

发帖
×
20
完善资料,
赚取积分