Ho un oggetto [] byte e voglio ottenere la dimensione in byte. Esiste un equivalente a sizeof() di C in golang? In caso contrario, puoi suggerire altri modi per ottenere lo stesso?Dimensioni di un array di byte golang
risposta
Penso che la vostra migliore scommessa sarebbe;
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
Anche se ci sono molte opzioni, come solo l'importazione e l'utilizzo non sicuro sizeof;
import unsafe "unsafe"
size := unsafe.Sizeof(bytes)
Si noti che per alcuni tipi, come fette, Sizeof
sta per darvi la dimensione del descrittore fetta che probabilmente non ciò che si desidera. Inoltre, tenere presente che la lunghezza e la capacità della sezione sono diverse e il valore restituito da binary.Size riflette la lunghezza.
Non è solo facile per ottenere la dimensione del descrittore di slice con Sizeof, * solo * ottieni la dimensione del descrittore che è sempre 3 parole. – JimB
Grazie! : D deve utilizzare il pacchetto codifica/binario –
@JimB yes ma l'OP potrebbe occuparsi di un array di byte nel qual caso funziona; https://play.golang.org/p/UQUcQYC9F3 personalmente penso che il pacchetto binario funzioni meglio perché non ti darà la dimensione dei descrittori di slice ma l'OP ha fatto l'equivalente di sizeof che non è sicuro. Dimensione del file. – evanmcdonnal
Per riportare il numero di byte in una fetta byte utilizzare la funzione len
:
bs := make([]byte, 1000)
sz := len(bs)
// sz == 1000
Se si intende il numero di byte nella matrice sottostante usa cap
invece:
bs := make([]byte, 1000, 2000)
sz := cap(bs)
// sz == 2000
Un byte è garantito un byte: https://golang.org/ref/spec#Size_and_alignment_guarantees.
Grazie a @Caleb, il Godoc ha sicuramente aiutato a chiarire ulteriormente le cose! –
- 1. Golang: array di byte dinamico non sicuro
- 2. Lettura di byte di dimensioni "integer" da un array char *.
- 3. Converti array di byte in io.read in golang
- 4. Convertire l'interfaccia arbitraria Golang nell'array di byte
- 5. Java: come "tagliare" un array di byte?
- 6. Golang convertire tipo byte [N] a [] byte
- 7. Convertire un array di byte a una classe che contiene un array di byte in C#
- 8. Come convertire un array di byte in un array int?
- 9. Come ottenere dimensioni di un'immagine che si svolge in un array di byte in KB
- 10. Rimozione dei primi 16 byte da un array di byte
- 11. Golang Conversione dell'immagine.Immagine su [] byte
- 12. Compressione GZIP su un array di byte
- 13. Ottenere un oggetto immagine da un array di byte
- 14. Copia array di byte in un altro array di byte in C#
- 15. Inserimento di un array in un database Postgresql in Golang
- 16. Int16 ad array di byte
- 17. array di byte in pdf
- 18. Come inizializzare un array di dimensioni modello?
- 19. array di byte in groove
- 20. Lettura di un file in un array di byte (PHP)
- 21. Golang e JSON con array di struct
- 22. Che cos'è un array byte []?
- 23. Dimensioni dell'enumerazione in byte di diversi compilatori
- 24. Come confrontare [32] byte con [] byte in golang?
- 25. fisso oggetto di array di byte
- 26. Invia array di byte di grandi dimensioni tra AppDomains nello stesso processo
- 27. conversione di array di byte per l'immagine
- 28. lotti di array di byte Android
- 29. Come inviare array di byte di grandi dimensioni tra attività in Android?
- 30. Converti array di byte in array di bit?
Vuoi la lunghezza, la capacità o la dimensione in memoria? Possono essere tutti diversi. – JimB
No, len fornisce il numero di oggetti in una matrice, non le dimensioni in termini di byte dell'intero array. Immagino che @evanmcdonnal abbia capito bene .. –
@ sr_149: non si ottiene la dimensione dell'array con 'binary.Size', si ottiene' length * data_type_size'. Questo può essere quello che vuoi, ma ricorda che la dimensione dell'array (capacità) è spesso diversa. – JimB