golang 在go中将字节数组转换为int

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang 在go中将字节数组转换为int相关的知识,希望对你有一定的参考价值。

package main

import "fmt"
import "encoding/binary"

func main() {
	var mySlice = []byte{0, 0, 1, 244}
	data := binary.BigEndian.Uint32(mySlice)
	fmt.Println(int(data))
}
//500

如何在 Objective-C 中将 int 转换为字节?

【中文标题】如何在 Objective-C 中将 int 转换为字节?【英文标题】:How do you convert an int to a byte in Objective-C? 【发布时间】:2011-02-10 22:07:26 【问题描述】:

我有一个需要转换为字节数组的 int 值。 你如何在 Objective-C 中做到这一点?有没有办法做到这一点?

谢谢,

【问题讨论】:

可能重复:*** - Store an int in a char array?。至少它可以让你到达char[] 【参考方案1】:

以什么方式转换?你想要它是小端、大端还是原生字节顺序?如果您希望它以本机字节顺序排列,那么您需要做的就是:

int val = //... 以某种方式初始化整数 char* 字节 = (char*) &val; int len = sizeof(int);

也就是说,处理整数字节的最佳方法是进行按位运算。例如,要获取最低位字节,可以使用val&0xFF,获取下一个使用(val>>8)&0xFF,然后是(val>>16)&0xFF,然后是(val>>24)&0xFF,等等。

当然,这取决于您的数据类型的大小。如果你做这些事情,你真的应该包括<inttypes.h>;,并使用uint8_tuint16_tuint32_tuint64_t,这取决于你想要多大的整数;否则,您将无法可靠地处理大量字节。

【讨论】:

假设你知道它是一个整数,你不能只使用一个循环并使用 8 的倍数来使用你从sizeof() 确定的长度可靠地处理它们的字节吗?【参考方案2】:

我怀疑您想要做的是将这个字节数组传递给某个地方可能的 NSMutableData 对象。你只需传递地址 &val

例子:

[myData appendBytes:&myInteger length:sizeof(myInteger)]; 

这个链接更完整,处理字节序:

Append NSInteger to NSMutableData

【讨论】:

对于 int 类型的数据,即 21,它将在字节数组或 NSData 或字节数组中返回 15 00 00 00。 15, 00, 00, 00。但有时我希望它以相反的顺序作为十六进制的 或 int (21) = 00, 00, 00, 15 的数组。在这种情况下,这种方法将不起作用。

以上是关于golang 在go中将字节数组转换为int的主要内容,如果未能解决你的问题,请参考以下文章

如何在c ++中将int数组转换为字节数组[重复]

在 C 中将偏移字节数组转换为 int32 数组

如何在 Objective-C 中将 int 转换为字节?

在 C# 中将 int[] 转换为 byte[]

在 GoLang 中将字节切片“[]uint8”转换为 float64

在 C 中将 int 转换为 2 字节的十六进制值