首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在golang中将字节数组打印为二进制?

在golang中,可以使用fmt.Printf函数将字节数组打印为二进制。下面是一个示例代码:

代码语言:txt
复制
package main

import (
    "fmt"
)

func main() {
    bytes := []byte{0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x20, 0x57, 0x6f, 0x72, 0x6c, 0x64}

    for _, b := range bytes {
        fmt.Printf("%08b ", b)
    }
}

这段代码中,我们定义了一个字节数组bytes,并使用循环遍历每个字节。在循环中,使用fmt.Printf函数和格式化占位符%08b将每个字节打印为二进制形式。其中,%08b表示打印为8位二进制数,不足8位的在前面补0。

运行以上代码,输出结果为:

代码语言:txt
复制
01001000 01100101 01101100 01101100 01101111 00100000 01010111 01101111 01110010 01101100 01100100

这样就将字节数组打印为二进制了。

推荐的腾讯云相关产品:腾讯云云服务器(https://cloud.tencent.com/product/cvm)

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Go 语言基本数据类型

1、Golang 数据类型介绍 Go 语言中数据类型分为:基本数据类型和复合数据类型 基本数据类型有: 整型、浮点型、布尔型、字符串 复合数据类型有: 数组、切片、结构体、函数、map、通道(channel...在涉及到二进制传输、为了保持文件的结构不会受到不同编译目标平台字节长度的影响,不要使用 int 和 uint。...注意: 布尔类型变量的默认值 false。 Go 语言中不允许将整型强制转换为布尔型. 3. 布尔型无法参与数值运算,也无法与其他类型进转换。...字符串底层是一个 byte 数组,所以可以和[]byte 类型相互转换。字符串是不能修改的 字符串是由 byte 字节组成,所以字符串的长度是 byte 字节的长度。...无论哪种换,都会重新分配内存,并复制字节数组

8910

数据类型和表达式

类型名称 类型描述 大小(字节) 初始化方式 数组(Array) 在内存中连续存储多个同类型元素的集合,长度固定不变 n * 元素大小 var a [n]T、a := [n]T{value1, value2...以下是一些关于Golang复合数据类型数组(Array)的一些例子 字符串数组 var names [3]string names[0] = "Alice" names[1] = "Bob" names...这个例子展示了如何在多个 goroutine 之间安全地传递数据,以及如何在通道被关闭时停止接收数据。...需要注意的是,在 Golang 中需要使用前缀 0b 表示二进制数值。 接下来我们展示了如何使用赋值表达式,包括加、减、乘、除等操作。可以看到在这里我们使用了 += 运算符实现了加法操作。...然后我们使用 * 运算符访问指针所指向的变量的值,并打印出来。 最后,我们演示了如何在函数中使用指针参数。我们定义了一个 increment 函数,并接收一个指针类型参数 p。

14110

Go 编程 | 连载 01 - Go Quickstart

一、Go 语言 Go 语言概览 Go(Golang) 是由 Google 开源的、静态、强类型的编程语言,Go 语言最初的设计目的是用来替代 C++。...Go 语言代码可以直接编译成二进制文件,可以直接执行,不同于 Java 要先编译成 class 文件给到 JVM,再编译成二进制文件。...var a = "Go" println(a) res, err := fmt.Println(a) fmt.Println(res, err) // 获取字符串的字节数组长度...var bytes_list = []byte("Go\n") fmt.Println("'Go\n'字符串转换为字节数组的长度:", len(bytes_list)) } 执行上述代码,输出结果如下...: Go Go 3 'Go\n'字符串转换为字节数组的长度: 3 当然 fmt 标准包中也包含了多个输出函数,常用的有: fmt.Print 函数:标准输出,不换行,输出多个非字符串类型变量时会添加空格

67420

Python 文件存储:pickle 和 json 库的使用

个人主页:小嗷犬的博客 个人信条:天地立心,为生民立命,往圣继绝学,万世开太平。...注意,pickle 操作的不是文本文件, 而是二进制文件。 因此, 存储的文件如果直接使用文本编辑器,则打开无法查看具体内容。...将 Python 对象存储到 pickle 文件的语法是: pickle.dump(obj, file) 从 pickle 文件中将二进制数据读取出来重建 Python 对象的语法是: pickle.load...(file) 将列表 ls 使用 pickle 模块存储在二进制文件 test.pkl 中,然后再次从文件中读取数据,重建列表后打印: import pickle ls = ['Python',...JSON 语法规则与 Python 中的字典和列表非常相似: 利用一对方括号 [] 表示数组; 利用一对花括号 {} 表示对象; 利用冒号分割键值对; 利用逗号分隔数组的元素或对象的键值对。

3.2K10

通过一个完整例子彻底学会protobuf序列化原理

下面的代码是以golang例: package main import ( "fmt" "/example" "github.com/golang/protobuf...fmt.Println(data) // 打印AllDataType类型的数据序列化后的二进制串 } 最后一行打印的结果: 执行结果.png 序列化结果分析 接下来就是最关键的一幅图,我们逐个字节地来分析一下上面的打印结果中...,每个字节所代表的含义(可查看大图): pb编码规则.png 【1】图中橙色部分(第1行第1列,第1行第4列)用于表示字段field number(简写fn)以及wire type(简写wt)。...【5】Protobuf表示浮点数的类型是double(8字节)和float(4字节)。浮点数也是直接按照它的二进制表示进行序列化。...【8】对于在proto文件中用repeat修饰的字段,值部分会连续出现多次,第7行第6列到第10列。一般repeat字段都被当成数组

15.6K133

浮点类型(float、double)在内存中如何存储?

下一步,将二进制表示以2底的科学计数法,如图: image.png 对于任何数字表示成二进制科学计数法以后,一定是1点几(尾数)乘以2的多少次方(指数)。...另外值得注意的是,虽然float a=0.6在内存中被存为了数字0x3F19999A,但是如果我们把4个字节看作是长度4的byte数组,不同的计算机对这个数组有不同的存储方式。...在大端模式下,这个数组[0x3F, 0x19, 0x99, 0x9A],即数字的高位在数组靠前位置;在小端模式下,这个数组[0x9A, 0x99, 0x19, 0x3F],即数字的高位在数组靠后位置...再来看一个8字节浮点数的例子: image.png 8字节数字-0.1,可以看到最高位1,表示负数。后面逻辑和前文的4字节浮点数类似,只是偏移量略有区别。...我们用一段简单的golang代码来说明一下(非常简单,非golang开发也能看懂)。

19.7K336

Go 1.16新特性-embed包及其使用

在没有嵌入的情况下,模板通常内联在代码中 静态web服务:有时,静态文件(index.html或其他HTML,JavaScript和CSS文件之类的静态文件)需要使用golang服务器二进制文件进行传输...embed包是golang 1.16中的新特性,所以,请确保你的golang环境已经升级到了1.16版本。...fmt.Printf("version: %q\n", version) } embed可嵌入的三种数据类型及使用 在embed中,可以将静态资源文件嵌入到三种类型的变量,分别为:字符串、字节数组...txtvar versionByte []bytefunc main() { fmt.Printf("version %q\n", string(versionByte))} 将文件内容嵌入到字符串或字节数组类型变量的时候...将文件内容嵌入到字节数组变量中,如下代码中的第7、8行: package main import ( _ "embed" "fmt" ) //go:embed version.txt

87100

golang之fmt格式占位符总结 【原创】

fmt.Printf("%x \n", "golang") // 676f6c616e67 %X 十六进制,大写字母,每字节两个字符 fmt.Printf("%X \n", "golang")...0(%#o)、十六进制添加前导 0x(%#x)或 0X(%#X)、 %p(%#p)去掉前导 0x 如果可能,%q(%#q)会打印原始 (即反引号围绕的)字符串; 如果是可打印字符,%U(%#U...)会写出该字符的Unicode 编码形式(字符 x 会被打印成 U+0078 ‘x’) fmt.Printf("%#U \n", '中') // U+4E2D '中' ' ' (空格)数值中省略的正负号留出空白...(% d),以十六进制(% x, % X)打印字符串或切片时,在字节之间用空格隔开 0 填充前导的0而非空格;对于数字,这会将填充移到正负号之后 9 符号与精度 无符号:golang没有 ‘%u...’ 占位符,若整数无符号类型,默认就会被打印成无符号的 宽度与精度:控制格式以Unicode码点单位。

1.9K80

Golang系列之字符类型基本介绍

Golang系列之字符类型基本介绍 1、基本介绍 Golang没有专门的字符类型,如果要存放单个字符,一般采用关键字byte或者是rune,本文主要挑byte来讲,然后go的字符和java中的字符是一样的...在java中字符串是用字符拼接成的字符序列,而golang中字符串不是由字符构成的,是由字节构成的 byte:代表 UTF-8 编码中单个字节的值,是 uint8 类型的别名,占用一个字节 rune...var n = 10+ 'a' // n=107 fmt.Println("n=" , n) ASCII编码和UTF-8编码对比,ASCII编码包含了 33 个控制字符和 95 个可显示字符,可以理解UTF...编码是兼容ASCII编码的,UTF-8编码里包括了ASCII编码的字符编码,还进行了拓展,以适应国际化的发展 4、go中的字符本质 在go语言中,字符存储原理: 存储:字符->对应编码unicode->二进制...读取:二进制->unicode编码->字符

37510

golang之fmt格式占位符总结

golang之fmt格式占位符总结 golang之fmt格式占位符总结 定义示例类型和变量 普通占位符 布尔占位符 整数占位符 浮点数和复数的组成部分实部和虚部 字符串与字节切片 指针 其它标记 符号与精度...fmt.Printf("%x \n", "golang") // 676f6c616e67 %X 十六进制,大写字母,每字节两个字符 fmt.Printf("%X \n", "golang")...0(%#o)、十六进制添加前导 0x(%#x)或 0X(%#X)、 %p(%#p)去掉前导 0x 如果可能,%q(%#q)会打印原始 (即反引号围绕的)字符串; 如果是可打印字符,%U(%...#U)会写出该字符的Unicode 编码形式(字符 x 会被打印成 U+0078 ‘x’) fmt.Printf("%#U \n", '中') // U+4E2D '中' ' ' (空格)数值中省略的正负号留出空白...(% d),以十六进制(% x, % X)打印字符串或切片时,在字节之间用空格隔开 0 填充前导的0而非空格;对于数字,这会将填充移到正负号之后 9 符号与精度 无符号:golang没有 ‘%

2.7K60

Golang 语言的内存管理

byte 的只读切片([]byte,长度 len) 结构体大小:16 字节 str 指针指向字符串首字节,以字节单位存储 字符串长度 通过实例代码,查看字符串长度: str := "hello北京...对象分配内存时,只需从大小合适的链表提取一个小块即可。 回收对象内存时,将该小块内存重新归还到原链表,以便复用。 闲置内存过多,则尝试归还部分内存给操作系统,降低整体开销。...Golang 语言的内存分配器分配流程: 计算待分配对象对应的规格(size class)。 从 cache.alloc 数组找到规格相同的 span。... span.freelist 空,从central 获取新 span。... central.nonempty 空,从 heap.free/freelarge 获取,并切分成 object 链表。 heap 没有大小合适的闲置 span,向操作系统申请新内存块。

79220

重新理解RocketMQ Commit Log存储协议

这里有几个问题需要说明下: 二进制协议存在字节序,也就是常说的大端、小端。大小端这里不详细说明感兴趣的同学自己google或者问题ChatGPT,回答肯定比我说的好。...Host的编码并不是简单的把IP:Port作为字符串直接转化为byte数组,而是每个数字当作byte依次编码。在下一节的Golang代码中会说明。...这个工具目前支持2个功能: 指定Commit Log位点,直接解析Commit Log中的消息,并且打印。...golang-import 这里贴了一段golang中解析Commit Log Offset的例子:在java中这个offset是一个long类型,占用8个字节。...在golang中,读取8个字节长度的数据,并且按照大端序解码int64,就可以得到正常的Commit Log Offset。

18020

数据在内存中的存储

如我们用char b=20;这里的20其实是 signed int 类型,然后发生隐式转换直接切割高进制位变为char类型再存入到b中(练习二中将会讲到) 像打印用%c就是直接打印出来'a',而用%...如数组,当大端模式其中第一个数据就放在地址最小处,最后的数据就是地址最大处,逐渐递增,该排序遵循数组自己的规则,而不是遵循大端模式。...此外对于数组名代表的是第一个元素的地址,而该地址的值不管其为大端还是小端都是数组最小的地址,并不会为此而改变。...所以打印出0.000000(本身结果其实也是0,因为其太小,内存里的都是0,发生了精度丢失) 在之后其9.0因为是double类型,但八个字节,而pfloat4个字节,所以编译器就只能将其由double...打印结果如下 精度损失问题浅谈 对于一个浮点数来说,存到内存上去要转换为二进制,而有些浮点数0.5就能直接转换为二进制0.1,而对于有些浮点数来说是一直求不到完整的,3.14,会一直求下去,而其小数内存是有限的

9910

重新理解RocketMQ Commit Log存储协议

这里有几个问题需要说明下: 1、二进制协议存在字节序,也就是常说的大端、小端。大小端这里不详细说明感兴趣的同学自己google或者问题ChatGPT,回答肯定比我说的好。...3、Host的编码并不是简单的把IP:Port作为字符串直接转化为byte数组,而是每个数字当作byte依次编码。在下一节的Golang代码中会说明。...这个工具目前支持2个功能: 1、指定Commit Log位点,直接解析Commit Log中的消息,并且打印。...golang-import 这里贴了一段golang中解析Commit Log Offset的例子:在java中这个offset是一个long类型,占用8个字节。...在golang中,读取8个字节长度的数据,并且按照大端序解码int64,就可以得到正常的Commit Log Offset。

21210

Go:学习笔记兼吐槽(2)

整数: 参数 含义 %b 表示二进制 %c 该值对应的unicode码值 %d 表示十进制 %o 表示八进制 %q 该值对应的单引号括起来的go语法字符字面值,必要时会采用安全的转义表示 %x 表示十六进制...浮点数与复数的两个组分: 参数 含义 %b 无小数部分、二进制指数的科学计数法,-123456p-78 %e 科学计数法, -1234.456e+78 %E 科学计数法, -1234.456E+78...int) string    // Itoa是FormatInt(i, 10) 的简写 base:指定进制(2到36) fmt:表示格式:'f'(-ddd.dddd)、'b'(-ddddp±ddd,指数二进制...值类型和引用类型 值类型: int、float、string、bool、数组、结构体struct 引用类型:指针、切片slice、map、管道channel、interface 注意:数组也是值类型,跟其他语言不同...Golang 中没有 while 和 do while,如果要实现类似的效果,就只能用这个方式。 for range for range 方式用于遍历容器类型,字符串、数组、切片、映射。

61820

Go 数据类型篇(三):字符串使用入门及底层字符类型编码详解

字符串 基本使用 在 Go 语言中,字符串是一种基本类型,默认是通过 UTF-8 编码的字符序列,当字符 ASCII 码时则占用 1 个字节,其它字符根据需要占用 2-4 个字节,比如中文编码通常需要...就像我们上面在字符串中转义双引号和换行符那样,常见的需要转义的字符如下所示: \n :换行符 \r :回车符 \t :tab 键 \u 或 \U :Unicode 字符 \\ :反斜杠自身 所以,上述打印代码输出结果...= `Search results for "Golang": - Go - Golang Golang Programming ` fmt.Printf("%s", results) 打印结果如下:...一种是以字节数组的方式遍历: str := "Hello, 世界" n := len(str) for i := 0; i < n; i++ { ch := str[i] //...rune } 输出结果: 0 72 1 101 2 108 3 108 4 111 5 44 6 32 7 19990 10 30028 这个时候,打印的就是 9 个字符了,因为以

1K10
领券