Как преобразовать id в int64 в id с 11-12 символами? В базе хранится id - int64. Хочу в url на UI иметь id в формате "8STmsLOBdgU", то есть как например на youtube. Хранить дополнительно этот длинный id хочу. То есть, хочу кодировать/раскодировать на лету. Как закадировать/раскодировать id int64 в id в формате "8STmsLOBdgU"? То есть в 11-12 символов. Какой алгоритм или криптофункцию использовать?
Для преобразования числового идентификатора int64 в строковый формат с 11-12 символами, вы можете использовать алгоритм кодирования, такой как base64. Вот пример кода на языке программирования Go, показывающий, как преобразовать int64 в base64 и обратно:
package main import "encoding/base64""fmt"
"encoding/base64" "fmt" "encoding/base64""fmt" func main { id := int64123456789012345678901234567890 // Преобразование int64 в byte и кодирование base64 idBytes := bytefmt.Sprintf("fmt.Sprintf("%d", id)fmt.Sprintf("
encodedID := base64.StdEncoding.EncodeToStringidBytesidBytesidBytes fmt.Println"EncodedID:",encodedID"Encoded ID:", encodedID"EncodedID:",encodedID // Декодирование base64 и преобразование обратно в int64 decodedIDBytes, err := base64.StdEncoding.DecodeStringencodedIDencodedIDencodedID
if err != nil { fmt.Println"Errordecodingid:",err"Error decoding id:", err"Errordecodingid:",err
return } decodedID := int64000
fmt.Sscanfstring(decodedIDBytes),"string(decodedIDBytes), "%d", &decodedIDstring(decodedIDBytes)," fmt.Println"DecodedID:",decodedID"Decoded ID:", decodedID"DecodedID:",decodedID
}
Этот код примерно отображает процесс преобразования int64 в base64 и обратно. Функция EncodeToString преобразует числовой идентификатор в массив байтов и затем кодирует его в формат base64. Функция DecodeString декодирует строку base64 обратно в массив байтов, а затем использует Sscanf для распознавания числового идентификатора в этом массиве байтов.
Это простой пример, и в зависимости от вашего языка программирования и среды выполнения, может потребоваться использовать другие библиотеки или алгоритмы кодирования. Надеюсь, это помогло вам начать.
Для преобразования числового идентификатора int64 в строковый формат с 11-12 символами, вы можете использовать алгоритм кодирования, такой как base64. Вот пример кода на языке программирования Go, показывающий, как преобразовать int64 в base64 и обратно:
package mainimport "encoding/base64""fmt" "encoding/base64"
"fmt"
"encoding/base64""fmt"
func main {
id := int64123456789012345678901234567890
// Преобразование int64 в byte и кодирование base64
idBytes := bytefmt.Sprintf("fmt.Sprintf("%d", id)fmt.Sprintf(" encodedID := base64.StdEncoding.EncodeToStringidBytesidBytesidBytes
fmt.Println"EncodedID:",encodedID"Encoded ID:", encodedID"EncodedID:",encodedID
// Декодирование base64 и преобразование обратно в int64
decodedIDBytes, err := base64.StdEncoding.DecodeStringencodedIDencodedIDencodedID if err != nil {
fmt.Println"Errordecodingid:",err"Error decoding id:", err"Errordecodingid:",err return
}
decodedID := int64000 fmt.Sscanfstring(decodedIDBytes),"string(decodedIDBytes), "%d", &decodedIDstring(decodedIDBytes),"
fmt.Println"DecodedID:",decodedID"Decoded ID:", decodedID"DecodedID:",decodedID }
Этот код примерно отображает процесс преобразования int64 в base64 и обратно. Функция EncodeToString преобразует числовой идентификатор в массив байтов и затем кодирует его в формат base64. Функция DecodeString декодирует строку base64 обратно в массив байтов, а затем использует Sscanf для распознавания числового идентификатора в этом массиве байтов.
Это простой пример, и в зависимости от вашего языка программирования и среды выполнения, может потребоваться использовать другие библиотеки или алгоритмы кодирования. Надеюсь, это помогло вам начать.