In der Sprache C können Sie "0,5" in "1056964608" auf einmal konvertieren.
#include <stdio.h>
int main() {
float f = 0.5;
printf("%d\n", *(int *)&f); // => 1056964608
}
(Die Schreibmethode ändert sich jedoch je nach Verarbeitungssystem und CPU-Architektur. Das Obige ist ein Beispiel für MacOS Sierra und clang-900.0.39.2.)
Wie kann ich das in Go-Sprache schreiben? Abschließend können Sie mit dem Typ "unsafe.Pointer" etwas Ähnliches tun.
package main
import "fmt"
import "unsafe"
func main() {
var f float32 = 0.5
var p unsafe.Pointer
p = unsafe.Pointer(&f)
fmt.Printf("%d\n", *(*int32)(p)); // => 1056964608
}
Was nützlich ist, ist, dass ich das Gefühl habe, direkt mit der Erinnerung zu spielen.
Recommended Posts