英文:
how to implement a readUInt16BE function in node.js
问题
在Node.js中,readUint16BE函数的声明如下:
buf.readUInt16BE(offset, [noAssert])
文档链接:
http://nodejs.org/api/buffer.html#buffer_buf_readuint16be_offset_noassert
该函数从指定偏移量处的缓冲区中以指定的字节序读取一个无符号的16位整数。
在Golang中如何实现这个功能?非常感谢!
或者Golang中是否有类似readUint16BE的函数?
英文:
The readUint16BE function in node.js, the function declare is:
buf.readUInt16BE(offset, [noAssert])
doc:
http://nodejs.org/api/buffer.html#buffer_buf_readuint16be_offset_noassert
> Reads an unsigned 16 bit integer from the buffer at the specified offset with specified endian format.
how to implement in golang? thanks very much
or golang have some function like readUint16BE ??
答案1
得分: 4
你可以使用encoding/binary包进行编码。以下是示例代码:
package main
import (
"encoding/binary"
"fmt"
)
func main() {
buf := make([]byte, 1024)
// 将uint16类型的数字320(大端序)放入buf的偏移量为127的位置
binary.BigEndian.PutUint16(buf[127:], 320)
// 将uint16类型的数字420(小端序)放入buf的偏移量为255的位置
binary.LittleEndian.PutUint16(buf[255:], 420)
// 从buf中获取大端序的uint16数字
result := binary.BigEndian.Uint16(buf[127:])
fmt.Printf("%d\n", result)
// 从buf中获取小端序的uint16数字
result = binary.LittleEndian.Uint16(buf[255:])
fmt.Printf("%d\n", result)
// 查看buf的状态(仅显示给定偏移量的2个字节,因为它是uint16类型)
fmt.Printf("%v, %v\n", buf[127:129], buf[255:257])
}
这段代码演示了如何使用encoding/binary包进行编码和解码操作。它将一个uint16类型的数字以大端序和小端序的方式存储到一个字节切片中,并从中提取出这两个数字。最后,它展示了buf的状态,显示了给定偏移量的2个字节。
英文:
You can use the encoding/binary package.
Ex: (http://play.golang.org/p/5s_-hclYJ0)
package main
import (
"encoding/binary"
"fmt"
)
func main() {
buf := make([]byte, 1024)
// Put uint16 320 (big endian) into buf at offster 127
binary.BigEndian.PutUint16(buf[127:], 320)
// Put uint16 420 (little endian) into buf at offster 127
binary.LittleEndian.PutUint16(buf[255:], 420)
// Retrieve the uint16 big endian from buf
result := binary.BigEndian.Uint16(buf[127:])
fmt.Printf("%d\n", result)
// Retrieve the uint16 little endian from buf
result = binary.LittleEndian.Uint16(buf[255:])
fmt.Printf("%d\n", result)
// See the state of buf (display only 2 bytes from the given often as it is uint16)
fmt.Printf("%v, %v\n", buf[127:129], buf[255:257])
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论