Próbuję haszysz ciąg do 64-bitowej wartości (bigint) w MySQL. Jestem świadomy funkcji MD5(), która zwraca 128-bitowy skrót jako binarny ciąg znaków. Byłbym szczęśliwy, gdyby po prostu wziąć na dół lub na górę 64 bitów tego wyniku. Jednak nie mogę dowiedzieć się, jak uzyskać od binarnego typu ciąg do dowolnego rodzaju liczbowego. Jakieś wskazówki?Konwertuj ciąg znaków binarnych na bigint w MySQL?
8
A
Odpowiedz
14
użyć funkcji CONV()
przekonwertować hash MD5 od podstawy 16 do podstawy 10 i CAST
przekonwertować go na numer:
select cast(conv(substring(md5(id), 1, 16), 16, 10) as unsigned integer) from SomeTable;
2
CREATE FUNCTION dbo.HexStrToVarBinary(@hexstr varchar(8000))
RETURNS varbinary(8000)
AS
BEGIN
DECLARE @hex char(1), @i int, @place bigint, @a bigint
SET @i = LEN(@hexstr)
set @place = convert(bigint,1)
SET @a = convert(bigint, 0)
WHILE (@i > 0 AND (substring(@hexstr, @i, 1) like '[0-9A-Fa-f]'))
BEGIN
SET @hex = SUBSTRING(@hexstr, @i, 1)
SET @a = @a +
convert(bigint, CASE WHEN @hex LIKE '[0-9]'
THEN CAST(@hex as int)
ELSE CAST(ASCII(UPPER(@hex))-55 as int) end * @place)
set @place = @place * convert(bigint,16)
SET @i = @i - 1
END
RETURN convert(varbinary(8000),@a)
END
GO
+0
Nice! miałem nadzieję, że coś tu jest wbudowane. –
+0
Teraz na odwrót: D: @ :) –
Powiązane problemy
- 1. Konwertuj biginta na ciąg znaków w Go
- 2. Konwertuj ciąg znaków na datetime
- 3. Konwertuj ciąg znaków na float?
- 4. Konwertuj ciąg znaków RTF na ciąg XAML
- 5. Konwertuj ciąg znaków na datę w java
- 6. Konwertuj ciąg znaków na kod w schemacie
- 7. Konwertuj uint64 na ciąg znaków w golang
- 8. bigint w mysql
- 9. Konwertuj ciąg na tablicę znaków swift 2.0
- 10. Konwertuj ciąg znaków SQL na znacznik czasu
- 11. Konwertuj ciąg znaków Base64 na plik obrazu?
- 12. Konwertuj ciąg znaków javascript na tablicę php
- 13. Konwertuj ciąg znaków HTML na obrazki
- 14. Powershell: Konwertuj obiekt na ciąg znaków
- 15. Konwertuj ciąg znaków szesnastkowych na kolor RGB
- 16. Konwertuj numer na 5-cyfrowy ciąg znaków
- 17. Jak uzyskać ciąg znaków binarnych z ArrayBuffer?
- 18. Konwertuj listę znaków (lub tablicę) na ciąg znaków
- 19. Konwertuj SVGSVGElement na ciąg
- 20. MySQL: bigint Vs int
- 21. Konwersja ciągów znaków binarnych na ASCII
- 22. Konwertuj obiekt SRE_Match na ciąg
- 23. Konwertuj ciąg znaków UTF8 na ASCII w Perlu
- 24. Konwertuj tablicę bajtów na ciąg znaków w PHP
- 25. Konwertuj ciąg znaków na odmianę w języku C++
- 26. Konwertuj ciąg znaków na strumień wejściowy XML w java
- 27. Konwertuj listę na ciąg znaków ze spacjami w pythonie
- 28. Konwertuj ciąg znaków na PAnsiChar w Delphi 2009
- 29. Konwertuj ciąg znaków na JSON w języku Python?
- 30. Konwertuj tablicę na ciąg? C#
Fajnie, tego właśnie szukam. Myślę, że nie potrzebuję obsady lub chcę rzucić na biginta, ale funkcja conv() była naprawdę tym, czego mi brakowało. –
Jedna uwaga końcowa. Wtedy uzyskiwałem dostęp do tej wartości liczbowej jako długą w Javie. Typy integer Java są podpisane, a wynik conv() jest zawsze dodatni, co oznacza, że w niektórych przypadkach przepełnienie. Dla tych, którzy używają tego jako znaku długiego, potrzebujesz obsady, a rzutowanie na "podpis" działa. –