相关疑难解决方法(0)

如何在32位架构中分配64位无符号长long到32位结构

我有2个内核,一个是32位,另一个是64位.

在64位机器上,我支持unsigned long long,我需要将这个值赋给一个可以在32位机器上访问的varriable,例如: -

typedef struct {
    unsigned int low;
    unsigned int high;
} myint64_t;

myint64_t app_sc;
Run Code Online (Sandbox Code Playgroud)

以下是64位机器的代码片段:

unsigned long long sc;

/* Calculate sc */
...
Run Code Online (Sandbox Code Playgroud)

现在在64位机器上,我需要将"sc"分配给app_sc,并将其用于64位机器上的某些计算.

我试图做这样的事情: -

app_sc = sc;
Run Code Online (Sandbox Code Playgroud)

但编译器给我编译时错误.我可以这样做,像这样: -

 app_sc.low = sc & 0xFFFFFFFF;
 app_sc.high = (sc>>32) & (0xFFFFFFFF);
Run Code Online (Sandbox Code Playgroud)

但这是否有保证,它适用于所有情况?

有没有更好的方法呢?

c unix linux embedded 64-bit

1
推荐指数
1
解决办法
5440
查看次数

标签 统计

64-bit ×1

c ×1

embedded ×1

linux ×1

unix ×1