Tôi có một đối tượng byte [] và tôi muốn lấy kích thước của nó theo byte. Có tương đương với sizeof của C() trong golang? Nếu không, bạn có thể đề xuất các cách khác để có được như vậy không?Kích thước của mảng byte golang
Trả lời
Tôi nghĩ rằng đặt cược tốt nhất của bạn sẽ là;
package main
import "fmt"
import "encoding/binary"
func main() {
thousandBytes := make([]byte, 1000)
tenBytes := make([]byte, 10)
fmt.Println(binary.Size(tenBytes))
fmt.Println(binary.Size(thousandBytes))
}
https://play.golang.org/p/HhJif66VwY
Mặc dù có rất nhiều lựa chọn, như chỉ nhập khẩu không an toàn và sử dụng sizeof;
import unsafe "unsafe"
size := unsafe.Sizeof(bytes)
Lưu ý rằng đối với một số loại, như slice, Sizeof
sẽ cung cấp cho bạn kích thước của bộ mô tả lát có thể không phải là thứ bạn muốn. Ngoài ra, hãy ghi nhớ độ dài và dung lượng của slice là khác nhau và giá trị được trả về bởi binary.Size phản ánh độ dài.
Nó không chỉ đơn giản để có được kích thước của bộ mô tả slice với Sizeof, bạn * chỉ * nhận được kích thước của bộ mô tả luôn là 3 từ. – JimB
Cảm ơn bạn! : D sẽ sử dụng mã hóa/nhị phân pkg –
@JimB có nhưng OP có thể xử lý mảng byte trong trường hợp nó hoạt động; https://play.golang.org/p/UQUcQYC9F3 cá nhân tôi nghĩ rằng các gói nhị phân hoạt động tốt hơn bởi vì nó sẽ không cung cấp cho bạn kích thước bộ mô tả slice nhưng OP đã làm cho tương đương với sizeof đó là unsafe.Sizeof. – evanmcdonnal
Để trả lại số byte trong một lát byte sử dụng len
chức năng:
bs := make([]byte, 1000)
sz := len(bs)
// sz == 1000
Nếu bạn có nghĩa là số lượng các byte trong mảng cơ bản sử dụng cap
thay vì:
bs := make([]byte, 1000, 2000)
sz := cap(bs)
// sz == 2000
Một byte được đảm bảo là một byte: https://golang.org/ref/spec#Size_and_alignment_guarantees.
Cảm ơn @Caleb, vị thần chắc chắn đã giúp mọi thứ rõ ràng hơn nữa! –
- 1. Đếm kích thước bit/byte của mảng
- 2. Golang: mảng byte động không an toàn
- 3. Cách lấy kích thước của cấu trúc và nội dung của nó theo byte trong golang?
- 4. Chuyển mảng byte thành io.read trong golang
- 5. Golang: Cắt và điền các mảng byte
- 6. Cách nhận kích thước byte của chuỗi nhiều byte
- 7. Tạo một mảng byte với kích thước động trong F #
- 8. Đọc byte kích thước "số nguyên" từ mảng char *.
- 9. C++ Kích thước của mảng
- 10. kích thước của mảng NumPy
- 11. Xác định kích thước byte của ma trận scipy.sparse?
- 12. Lấy kích thước của các kích thước trong mảng
- 13. Chuyển đổi giao diện Golang tùy ý sang mảng byte
- 14. Chuyển đổi kích thước cố định mảng vào mảng có kích thước biến tại Gò
- 15. Ruby nhận được kích thước tính bằng byte của một mảng
- 16. Nhận kích thước của tệp từ mảng byte (không lưu vào đĩa)
- 17. Tính toán kích thước của một mảng
- 18. Tìm kích thước của một mảng javascript
- 19. kích thước động C++ của mảng
- 20. Lấy kích thước của một mảng 2D
- 21. Marshalling một kích thước mảng chưa biết
- 22. Dự đoán kích thước byte của byte được mã hóa base64 []
- 23. Tính kích thước theo byte của một Chuỗi Swift
- 24. Tính kích thước byte của đối tượng Java
- 25. Kích thước của một byte trong bộ nhớ - Java
- 26. Nhận kích thước byte của Danh sách <T>
- 27. phép kích thước bộ nhớ của 268.435.456 byte kiệt sức
- 28. C++: kích thước của một mảng char sử dụng sizeof
- 29. Kích thước tối đa của một mảng trong 32 bit?
- 30. C tìm kích thước mảng tĩnh
Bạn có muốn độ dài, dung lượng hoặc kích thước trong bộ nhớ không? Tất cả chúng có thể khác nhau. – JimB
Không, len cung cấp cho bạn số đối tượng trong một mảng không phải là kích thước theo byte của toàn bộ mảng. Tôi đoán @evanmcdonnal đã làm đúng .. –
@ sr_149: bạn không nhận được kích thước của mảng với 'binary.Size', bạn nhận được' length * data_type_size'. Đây có thể là những gì bạn muốn, nhưng hãy nhớ kích thước của mảng (dung lượng) thường khác nhau. – JimB