/ / Przekształcanie heksadecymalnego na ciąg znaków w formacie Swift sformatowanym w taki sposób, aby zachować tę samą liczbę cyfr - swift, string, int, hex

Konwertowanie heksadecymalnego na ciąg w Swift w taki sposób, aby zachować tę samą liczbę cyfr - szybki, ciąg, int, szesnastkowy

Próbuję utworzyć ciąg z wartości szesnastkowych w tablicy, ale ilekroć hex w tablicy zaczyna się od zera, znika również w ciągu wynikowym.

używam String(value:radix:uppercase) aby utworzyć ciąg.


Przykład:

Oto tablica: [0x13245678, 0x12345678, 0x12345678, 0x12345678].
Co daje mi ciąg: 12345678123456781234567812345678 (32 znaki)

Ale następująca tablica: [0x02345678, 0x12345678, 0x02345678, 0x12345678] (zauważ, że wymieniłem dwa 1„z zerami).
Daje mi ciąg: 234567812345678234567812345678 (30 znaków)


Nie jestem pewien, dlaczego usuwa zera. Wiem wartość jest poprawne; jak mogę go sformatować, aby zachować zero, jeśli tak było?

Odpowiedzi:

3 dla odpowiedzi № 1

Numer 0x01234567 jest naprawdę po prostu 0x1234567. Zera wiodące w literałach liczbowych nic nie znaczą (chyba że używasz początkowych zer dla literałów liczb ósemkowych).

Zamiast używać String(value:radix:uppercase), posługiwać się String(format:).

let num = 0x1234567
let str = String(format: "%08X", num)

Objaśnienie formatu:

  • The 0 oznacza uzupełnienie lewego końca łańcucha zerami w razie potrzeby.
  • The 8 oznacza, że ​​chcesz, aby wynik miał 8 znaków
  • The X oznacza, że ​​chcesz przekonwertować liczbę na szesnastkę wielkimi literami. Posługiwać się x jeśli chcesz małe litery szesnastkowe.