【发布时间】:2014-07-06 15:46:41
【问题描述】:
我有一个类型为long long int 的变量名为iData;
iData 从 1 计数到最大值。
我需要将此变量复制到 char 数组中。
我尝试了以下方法
long long int iData;
char cDataBuffer[8];
for(i=0;i<8;i++) {
cDataBuffer[i]= (iData & 0XFF);
iData = (iData >>8);
}
但我想将其存储在指针变量char *pDataBuffer中的动态变量中。
有人可以建议如何存储这个可变的 iData 可变长度。
【问题讨论】:
-
顺便说一句,你总是得到 7 个零。您可能想使用
iData >> 8。 -
@Deduplicator:您的方法将
iData以主机字节顺序存储到cDataBuffer中,可以是任何东西。 user3704068 的原始方法(Jongware 指出的更正)将确保 little-endian 字节顺序。 -
@user3704068:“我没有 Idata 的大小”是什么意思?
iData的大小始终为sizeof(iData);它不能改变。 -
@Deduplicator 这还不够,因为它通过违反严格的别名规则来调用未定义的行为。 不要通过向初学者推荐不良做法来传播不良做法!
-
@Deduplicator 不,你阅读了该规则(例如,here)。如果您使用别名使用
char *(即char *p = (char *)&foo,则可以,但如果您使用别名char *(或除已签名或未签名的@987654335 之外的任何其他内容)则不可以@) 使用long long *(这正是你错误地建议的)。