MySQL'de bir 64-bit değerine (bigint) bir dize eklemeyi deniyorum. Bir 128-bit karma bir ikili dize döndüren MD5() işlevinin farkındayım. Bu sonucun alt veya üst 64 bitini almaktan mutluluk duyarım. Ancak, bir ikili dize türünden herhangi bir türün sayısal türüne nasıl ulaşılacağını anlayamıyorum. Herhangi bir işaretçi?MySQL'de ikili dizgeyi bigint dosyasına dönüştürün?
8
A
cevap
14
kullan sayıya dönüştürmek için 10 ve CAST
dayandırmak tabanından 16 ila MD5 karma dönüştürmek için CONV()
fonksiyonu:
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'i! Orada bir şey olduğunu umuyordu. –
+0
Şimdi diğer yolla lütfen: D: @ :) –
İlgili konular
- 1. Onaltılı değeri bigint olarak dönüştürün
- 2. Dizgeyi matematiksel değerlendirmeye dönüştürün
- 3. İkili dizgeyi tamsayıya dönüştür
- 4. android stüdyoda ikili dizgeyi tamsayıya nasıl dönüştürebilirim?
- 5. Python modüllerini DLL dosyasına dönüştürün
- 6. xml_nodeset dosyasını data.frame dosyasına dönüştürün.
- 7. Metni java ikili dosyasına dönüştürme
- 8. Tüm 1'lere ikili sayı akışını dönüştürün
- 9. sql-server * .mdf dosyasını sqlite dosyasına dönüştürün
- 10. Pandas read_csv: belirli dizgiyi numpy.inf dosyasına dönüştürün
- 11. Dizgeyi jQuery nesnesine dönüştürün ve iç eleman öğesini seçin
- 12. Dizgeyi tamsayı (veya sıfır)
- 13. Onaltılık dizgeyi tamsayıya çevirme
- 14. SQL Bigint karma karma
- 15. max value temsil eder bigint
- 16. postgresql: bytea 'yı bigint' e çevirme
- 17. Bir ikili dizgeyi karşılık gelen hex dizesine dönüştürmek istiyorum.Ama ikili giriş dizesi çok uzun olduğunda NumberFormatException görüntüleniyor. Nasıl düzeltebilirim?
- 18. M4a'yı MP3'e dönüştürün
- 19. Dizgeyi Düzendeki Tamsayıya Dönüştürme
- 20. Dizgeyi bayt olarak
- 21. Dizgeyi tamsayı olarak dönüştürme
- 22. Python dizgeyi float'a dönüştüremedi
- 23. bu dizgeyi nasıl kaldırılır
- 24. Bir dizgeyi async'den döndürme
- 25. Dizgeyi ostringstream'den kopyalamaktan kaçının
- 26. Dizgeyi karakterlerden kaldırma
- 27. Veritabanındaki dizgeyi değiştirin
- 28. Bir dizi dizgeyi filtrelemek
- 29. SQL'de BIGINT alan türünün sınırı nedir?
- 30. unix zaman damgasını H2 zaman damgasına dönüştürün
Güzel, bu ben arıyorum. Oyuncuya ihtiyacım yok ya da bigint'e atmak istiyorum ama conv() işlevi gerçekten de eksik olduğum şeydi. –
Son bir not. Bu sayısal değere Java'da uzun süre erişiyordum. Java tamsayı türleri imzalanır ve conv() 'nin sonucu her zaman pozitiftir, bu da bazı durumlarda taşmaları anlamına gelir. Bunu uzun zamandır imzalı olarak kullananlar için, oyuncuya ihtiyacınız var ve 'imzalı' olarak adlandırmak da hile yapıyor. –