如何“拆分”,即 long long 类型,以便它的第一部分位于 long 类型的 var 中,第二部分也位于 long 类型的 var 中。
long long long_type = 0xaaaabbbbccccdddd;
在第一个 int 中,我希望拥有 long_type var 的前半部分(无论从哪一侧),在第二个 var int 后半部分。
你的问题含糊不清。这取决于你所说的“分裂”是什么意思。您可以拆分价值表示你原来的long long
或者你可以拆分对象表示你的long long
.
如果您想拆分值表示,那么您的问题会更加含糊,因为您的原始值是signed。您打算如何拆分有符号值?您期望什么样的结果?签?未签名?高位部分有符号,低位部分无符号?或者是其他东西?
对于无符号值,它将如下所示(假设接收者类型long
有适合您用途的尺寸)
unsigned long long long_type = ...;
unsigned long hi = long_type / ULONG_MAX;
unsigned long lo = long_type;
如果你想分割对象表示,正确的方法是使用memcpy
(在这种情况下,原始值的符号并不重要)
long long long_type = ...;
unsigned long hi, lo;
memcpy(&lo, &long_type, sizeof lo);
memcpy(&hi, (char *) &long_type + sizeof lo, sizeof hi);
当然,在这种情况下,哪一部分实际上是低阶部分,哪一部分是高阶部分将取决于平台。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)