(long long)型的endian变换怎么做?

bobo-nt 2006-05-26 11:04:37
(long long)型的endian变换怎么做?
...全文
192 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
universes 2006-05-26
  • 打赏
  • 举报
回复
mark
feny911 2006-05-26
  • 打赏
  • 举报
回复
谢谢 AN_941() 指出我的错误。
想不到现在我连个交换都会写错。
feny911 2006-05-26
  • 打赏
  • 举报
回复
浮点数的处理也是一样的。
至于是否遵循IEEE标准是另外一回事,跟endian无关。
AN_941 2006-05-26
  • 打赏
  • 举报
回复

void swap(LONGLONG * ll)
{
int len = sizeof(long long), i;
char temp;
for (i = 0; i < len/2; i++) {
temp = ll->b[i];
ll->b[i] = ll->b[len-1-i];
ll->b[len-1-i] = ll->b[i]; ????????????????? ll->b[len-1-i] = temp;
}
}
happytang 2006-05-26
  • 打赏
  • 举报
回复
大小端问题是按字节存储的,同楼上说,跟整型一样处理
交换高低字节就可以了
注意float可能有不同
看一下:http://www.programfan.com/blog/article.asp?id=784
feny911 2006-05-26
  • 打赏
  • 举报
回复
endian问题指的是字节序,不是位序。
long long的做法其实跟int一样,长度有点区别而已。

typedef union {
long long a;
char b[1];
}LONGLONG;

void swap(LONGLONG * ll)
{
int len = sizeof(long long), i;
char temp;
for (i = 0; i < len/2; i++) {
temp = ll->b[i];
ll->b[i] = ll->b[len-1-i];
ll->b[len-1-i] = ll->b[i];
}
}

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧