Wpis z mikrobloga

Dlaczego ta linia w C#:

var a = (int)((num[0] * 16777216) + num[1]);
dla

num[0] = 154
i
num[1] = 4156387

zwraca wartość -1707119645 zamiast 2587847651 (potrzebuję, aby ten kod działał w IronPython), jeśli jest to rzutowanie albo inny mechanizm, to tego nie widzę :(

#programowanie
#naukaprogramowania
  • 15
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@prdlt: Zła droga! Jak się nie mieścisz z wynikami w 32bitach, to użyj 64bitowej implementacji liczb całkowitych.

long => System.Int64

Nie kombinuj bo będziesz miał rozwiązanie nieprzenośne między systemami/wersjami.
  • Odpowiedz
@kot_gagarina:
Piszę skrypt, który ma na podstawie 22 liczbowego ciągu znaków przekształcać go jednoznacznie na GUID w .Necie. Wykorzystuję tą metodę.
a jest wartością podowaną jako pierwszy Int32. Na ten moment ma to działać na IronPython 2.7.3. Tylko i wyłącznie. Ale chętnie posłucham krytyki - więcej kodu mogę wysłać na pw.
  • Odpowiedz