2016-04-05 2 views
0

В Go, я пытаюсь смешать IP-адрес с именем пользователя для вывода какой-то сжатой уникальной строки.Go - Как объединить несколько строк для вывода уникальной «сжатой» строки?

Например:"MyUsername" + "192.354.32.245" = "JDU7DNd"

+0

У вас есть коэффициент сжатия в виду? – nevets

+0

Какую проблему вы пытаетесь решить? – jcbwlkr

+0

Попробуйте создать хэш с помощью FNV и закодируйте его через base32. –

ответ

2

A UUID могут быть сгенерированы для каждого пользователя, который будет генерировать случайные 128-битное значение.

Однако для статического вывода я написал функцию, которая будет хешировать и суммировать несколько строк, которые выдадут уникальное значение.

func Combine(string ...string) uint32 { 
    h := fnv.New32a() 

    for _, a := range string { 
     h.Write([]byte(a)) 
    } 

    return h.Sum32() 
} 

https://play.golang.org/p/W_6GUTRJ6b


Авторы: Martin Gallagher (FNV), nevets (UUID).

+0

Создайте экземпляр fnv вне цикла и напишите() внутри цикла, затем верните h.Sum32() - https://play.golang.org/p/W_6GUTRJ6b –

+0

Спасибо, он был обновлен. – Acidic

Смежные вопросы