首页 > 其他分享 >Go数组转换,[]byte、[]unint16互相转换的方法封装,完整范例

Go数组转换,[]byte、[]unint16互相转换的方法封装,完整范例

时间:2023-08-11 17:55:22浏览次数:38  
标签:转换 uint16s bytes uint16 unint16 Go byte 256

需求:分别封装方法将[]byte转换成[]unint16,将[]unint16转换成 []byte

byte相当于unint8

分析:长度为20的[]byte转换为长度为10的[]unint16,

他们之间的转换如

bytes := []byte{0, 1}   ===》[0*256+1]=1  注意:第奇数乘256加偶数的值 则 []uint16的值为[1] 完整代码如下:
 1 package main
 2 
 3 import (
 4     "fmt"
 5 )
 6 
 7 func BytesToUint16s(bytes []byte) []uint16 {
 8     numUint16s := len(bytes) / 2
 9     uint16s := make([]uint16, numUint16s)
10 
11     for i := 0; i < numUint16s; i++ {
12         uint16s[i] = uint16(bytes[i*2])<<8 | uint16(bytes[i*2+1])
13     }
14     return uint16s
15 }
16 
17 func Uint16sToBytes(uint16s []uint16) []byte {
18     numBytes := len(uint16s) * 2
19     bytes := make([]byte, numBytes)
20 
21     for i := 0; i < len(uint16s); i++ {
22         bytes[i*2] = byte(uint16s[i] >> 8)
23         bytes[i*2+1] = byte(uint16s[i])
24     }
25     return bytes
26 }
27 
28 func main() {
29     bytes := []byte{0, 1, 1, 0, 19, 18, 255, 0, 0, 1, 1, 0, 19, 18, 255, 0, 19, 18, 255, 255}
30     uint16s := []uint16{1, 256, 4882, 65280, 1, 256, 4882, 65280, 4882, 65535}
31 
32     getUint16s := BytesToUint16s(bytes)
33     getBytes := Uint16sToBytes(uint16s)
34 
35     fmt.Println(getUint16s)
36     fmt.Println(getBytes)
37 }

 

 

标签:转换,uint16s,bytes,uint16,unint16,Go,byte,256
From: https://www.cnblogs.com/sinberya/p/17623646.html

相关文章

  • 通过python的pymongo连接MongoDB数据库最新方式
    首先导入需要的模块功能fromurllibimportparsefrompymongoimportMongoClient使用pymongo的客户端进行链接self.host="168.9.5.27"self.port=27017self.user="Mr.baba"self.password="PLA_No.1"......
  • 传奇架设服务端传奇GOM引擎不加载插件,写入了不加载的解决方法
    MirServer\Mir200下面的PlugList.txt文件里写入了插件dll名称,但是启动服务端时还是不加载,主要是因为是因为插件目录不正确,以下告诉大家解决方法。首先关掉M2,然后打开“D:\MirServer\Mir200\!Setup.txt”文件搜索该文件,搜索关键字是“Plugdir”把搜索到的那一行全部删除就可以了,如......
  • mongoDB 入门指南、示例
    一、准备工作1、下载mongoDB下载地址:http://www.mongodb.org/downloads选择合适你的版本相关文档:http://www.mongodb.org/display/DOCS/Tutorial2、安装mongoDBA、不解压模式:将下载下来的mongoDB-xxx.zip打开,找到bin目录,运行mongod.exe就可以启动服务,默认端口27017,db保存的路径......
  • 如何在32位ubuntu11.10 下编译android 4.0.1源码和goldfish内核
    一准备工作 1安装javasdk6(1)从jdk官方网站http://www.oracle.com/technetwork/java/javase/downloads/jdk-6u29-download-513648.html下载jdk-6u29-linux-i586.bin文件。(2)执行jdk安装文件 [html] viewplaincopy1.$chmoda+xjdk-6u29-linux-i586.bin2.$jdk......
  • MongoDB索引操作和执行计划Explain()详解
    一、索引操作说明,下面的内容举例时,以"dailyTrip"collection为例。字段内容如下:{"_id":ObjectId("63ec5a971ddbe429cbeeffe3"),//objectid"car_type":"Gett",//string"date":ISODate("2016-04-01T0......
  • Django之CBV装饰器、中间件、csrf跨站请求
    一、CBV装饰器要求:访问CBV函数视图需要先登录1、含cookie的装饰器#登录认证装饰器cookie版deflogin_auth(func):definner(request,*args,**kwargs):ifrequest.COOKIES.get('username'):returnfunc(request,*args,**kwargs)else......
  • go1.21循环中的变量有变化
    最近发了go1.21.0,听说循环中的变量有变化,跑一下看看。1.21.0默认还是和之前一样的。通过设置goenv-wGOEXPERIMENT=loopvar让新语义生效packagemainimport( "fmt" "sync/atomic" "time")funcmain(){ varis[]int32 fori:=int32(0);i<10;i++{ is......
  • Django原生分页功能的实现
    分页类的封装"""如果想要以后使用分页,需要以下两个步骤:在视图函数:defcustomer_list(request):#这里是获取搜索form表单提交的搜索关键字keyword=request.GET.get('keyword','').strip()#使用Q对象进行或查询con=Q()ifkeyword:con.c......
  • 关于django中如何让页面跳转时携带当前页面的参数
    需求分析:处理逻辑步骤:在跳转到目标url时,先要获取当前页url所携带的参数#当前页urlhttp://127.0.0.1:9000/customer/list/?page=11#获取当前页url所携带的参数request.GET.urlencode()#paeg=11构造跳转页面的url#原本跳转页链接http://127.0.0.1:9000/custo......
  • django中如何开启事务&启动锁
    django开启事务#先导入模块fromdjango.dbimporttransaction#开启事务try: withtransaction.atomic(): 操作数据库的代码块 (出现异常会回滚)exceptExceptionase: 出现异常会执行下面的代码django开启锁......