我正在使用來自http://github.com/go-sql-driver/mysql的 MySQL 驅(qū)動程序我需要將 MySQL 中 IP 地址的二進(jìn)制表示形式存儲在 BINARY(4) 列中。為此,我嘗試過: startSlice := net.ParseIP(rangeStart).To4() var startBytes [4]byte copy(startSlice[:], startBytes[0:4]) endSlice := net.ParseIP(rangeEnd).To4() var endBytes [4]byte copy(endSlice[:], endBytes[0:4]) r, e := db.Exec("UPDATE AIPRangesBlocks SET BinRangeStart = ?, BinRangeEnd = ? WHERE IPGRID = ?", startBytes, endBytes, id) fmt.Println("result of update:", r) if e != nil { fmt.Println(e) }請注意,我使用 copy 命令將 []byte 切片轉(zhuǎn)換為簡單的 [4]byte 數(shù)組,但出現(xiàn)此錯誤:sql: converting Exec argument #0's type: unsupported type [4]uint8, a array如果我直接以 net.ParseIP("some_ip").To4() 的形式執(zhí)行此操作,則會出現(xiàn)此錯誤:sql: converting Exec argument #0's type: unsupported type net.IP, a slice如何發(fā)送二進(jìn)制數(shù)據(jù)?如果我使用十六進(jìn)制字符串,它將執(zhí)行查詢,但在檢索時我沒有得到正確的值。我嘗試了 hex.EncodeToString() 和 "0x" + hex.EncodeToString() ,但都不能正常工作。下面是一個例子:66.182.64.0 becomes 42b64000如果我在 MySQL 列中存儲“42b64000”,我會返回:52 50 98 54如果我在 MySQL 列中存儲“0x42b64000”,我會返回:48 120 52 50我該如何解決?
如何在 MySQL 中存儲二進(jìn)制數(shù)據(jù)?
慕田峪4524236
2021-06-29 01:13:33