Hex to Int Convert Problemi (çözüldü)

MS SQL Server veritabanı ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Kullanıcı avatarı
adelphiforumz
Üye
Mesajlar: 602
Kayıt: 01 Nis 2008 05:38
Konum: İstanbul

Hex to Int Convert Problemi (çözüldü)

Mesaj gönderen adelphiforumz »

S.A.

SQL üzerinde aşağıdaki gibi bir işlem yapıyorum ve gelen sonuc yanlış çıkıyor bunun nedeni ne olabilir.

SELECT CONVERT(int, CONVERT(varbinary, '0x' + 'FEC07B28')) AS KARTNO

Cikan hatalı Sonuc : 927085112
Olması gereken sonuc : 4274027304

Teşekkürler
En son adelphiforumz tarafından 13 Nis 2011 05:55 tarihinde düzenlendi, toplamda 2 kere düzenlendi.
Ehil olmayanlara sabretmek ehil olanları parlatır.
Akıllı birisinden gelen cefa, bilgisizlerin vefasından iyidir.
Bilgiye ulaştı mı ayak, kanat olur
Biz insanı kıyafetiyle ağırlar bilgisiyle uğurlarız.
Mevlana
emin_as
Üye
Mesajlar: 559
Kayıt: 01 Eki 2008 10:05
Konum: izmir
İletişim:

Re: Hex to Int Convert Problemi

Mesaj gönderen emin_as »

32 bit Integerlar en az -2,147,483,648 en cok 2,147,483,647 olabilir.
Unsigned integer veya 64 bit integer kullanmayı dene.
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: Hex to Int Convert Problemi

Mesaj gönderen sabanakman »

Ek olarak tırnak kullanmadan ve varbinary tipine çevirmeden direkt sayıya çevirebilirsiniz.

Kod: Tümünü seç

SELECT CONVERT(bigint, 0xFEC07B28)
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Kullanıcı avatarı
adelphiforumz
Üye
Mesajlar: 602
Kayıt: 01 Nis 2008 05:38
Konum: İstanbul

Re: Hex to Int Convert Problemi (çözülmedi)

Mesaj gönderen adelphiforumz »

Fakat sıkıntı şu
SELECT CONVERT(bigint, 0xFEC07B28) şeklinde kullandığımda sonuç doğru çıkıyor fakat
benim elimde FEC07B28 olarak gelen değer bir dosyadan varshar tütürmde ve 8 karakter olarak duruyor
benim bunu bir şekilde birleştirmem ve buna göre sonucu ekde etmem gerekiyor
bu dönüşümü nasıl yapmalıyım

SELECT CONVERT(bigint, '0x' + TableX.FieldY) budurumda hta alıyorum
convert işlemi nasıl olmalı

Teşekkürler
Ehil olmayanlara sabretmek ehil olanları parlatır.
Akıllı birisinden gelen cefa, bilgisizlerin vefasından iyidir.
Bilgiye ulaştı mı ayak, kanat olur
Biz insanı kıyafetiyle ağırlar bilgisiyle uğurlarız.
Mevlana
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: Hex to Int Convert Problemi (sorun devam ediyor)

Mesaj gönderen sabanakman »

Aslında pek araştırma yapmadan yazıyorum belki çok daha basit yolu vardır. Can sıkıntısından SQL Fonksiyonu şeklinde bir şeyler karaladım, umarım işinize yarayacaktır :mrgreen: . Ayrıca makale ve ipucu konusu da olabilirdi...

Kod: Tümünü seç

CREATE FUNCTION HexToDec  (@Sayi nvarchar(10))
RETURNS bigint
AS
BEGIN
  DECLARE @Sonuc bigint, @S int
  SET @Sonuc=0
  IF (@Sayi is not Null) WHILE (@Sayi<>'') BEGIN
    SET @S=Ascii(Left(@Sayi,1))
    SET @Sayi=Right(@Sayi,Len(@Sayi)-1)
    IF @S BETWEEN 48 AND  57 SET @S=@S-48
    ELSE IF @S BETWEEN 65 AND 70 SET @S=@S-55
    ELSE IF @S BETWEEN 97 AND 102 SET @S=@S-87
    --ELSE --HATALI VERİ
    SET @Sonuc=@Sonuc*16+@S
  END
  RETURN @Sonuc
END
şeklinde bir SQL Fonksiyonu yazıp kullanabilirsiniz.

Kod: Tümünü seç

select dbo.HexToDec('FEC07B28')
gibi..
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Kullanıcı avatarı
adelphiforumz
Üye
Mesajlar: 602
Kayıt: 01 Nis 2008 05:38
Konum: İstanbul

Re: Hex to Int Convert Problemi (Çözüldü)

Mesaj gönderen adelphiforumz »

Yardımcı olan arkadaşlar teşekkürler
ben internette araştırırken şöyle bir kod buldum ve işimi gördü
belki ilerde birinin daha işine yarar.

select CONVERT(bigint, CONVERT(varbinary, right('000000000' + cast('FFFFFFFF' as varchar(10)), 10), 2))
Ehil olmayanlara sabretmek ehil olanları parlatır.
Akıllı birisinden gelen cefa, bilgisizlerin vefasından iyidir.
Bilgiye ulaştı mı ayak, kanat olur
Biz insanı kıyafetiyle ağırlar bilgisiyle uğurlarız.
Mevlana
Cevapla