前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Golang 主机字节序的判断

Golang 主机字节序的判断

作者头像
恋喵大鲤鱼
发布2019-07-01 10:55:01
1.7K0
发布2019-07-01 10:55:01
举报
文章被收录于专栏:C/C++基础C/C++基础

字节序按类别分两种,一种是小端(Little Endian),另一种是大端(Big Endian)。 (1)小端字节序,指一个单元在计算机中存放时按照低位在低地址,高位在高地址的模式存放; (2)大端字节序,指一个单元在计算机中存放时按照低位在高地址,高位在低地址的模式存放。

字节序按应用场景也分两种,一是网络字节序,二是主机字节序。网络字节序为大端字节序,是确定的。主机字节序由 CPU 架构确定,可能是小端,也可能是大端,一般使用的 Intel 与 AMD 的 CPU 均为小端字节序。

下面以 Golang 为例,实现主机字节序的判断。

代码语言:javascript
复制
import "unsafe"

func IsLittleEndian() bool {
	n := 0x1234
	f := *((*byte)(unsafe.Pointer(&n)))
	return (f ^ 0x34) == 0
}

注意,Golang 是强类型语言,不允许不同类型的指针之间进行强制转化,因此需要借助 unsafe.Pointer 进行一次中转。


参考文献

[1] Golang官网.unsafe.Pointer

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年06月30日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 参考文献
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档