栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

将整数转换为字节数组

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

将整数转换为字节数组

我同意Brainstorm的方法:假设您要传递机器友好的二进制表示形式,请使用该

encoding/binary
库。OP建议
binary.Write()
可能会有一些开销。纵观源的实施
Write()
,我看到它做了一些运行时的决策最大的灵活性。

func Write(w io.Writer, order ByteOrder, data interface{}) error {    // Fast path for basic types.    var b [8]byte    var bs []byte$switch v := data.(type) {$  case *int8:$         bs = b[:1]$      b[0] = byte(*v)$        case int8:$          bs = b[:1]$      b[0] = byte(v)$         case *uint8:$        bs = b[:1]$      b[0] = *v$   ...

对?Write()接受一个非常通用的

data
第三个参数,这会带来一些开销,因为Go运行时随后被迫对类型信息进行编码。由于
Write()
在此处执行了一些您根本不需要的运行时决策,也许您可​​以直接调用编码函数,看看它是否更好。

像这样:

package mainimport (    "encoding/binary"    "fmt")func main() {    bs := make([]byte, 4)    binary.LittleEndian.PutUint32(bs, 31415926)    fmt.Println(bs)}

让我们知道这是如何执行的。

否则,如果您只是尝试获取整数的ASCII表示形式,则可以获取字符串表示形式(可能带有

strconv.Itoa
),并将该字符串转换为
[]byte
类型。

package mainimport (    "fmt"    "strconv")func main() {    bs := []byte(strconv.Itoa(31415926))    fmt.Println(bs)}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/436169.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号