Konvertierung von NSData in Integer in Swift

7

In Objective-C sah der Code gut aus und funktionierte einwandfrei,

%Vor%

Wie kann das in Swift gemacht werden?

    
dhint4 07.10.2014, 02:30
quelle

6 Antworten

14

So:

%Vor%     
findall 07.10.2014, 03:03
quelle
6

Für Swift 3 können Sie dies tun (Little Endian, aber ähnlich für große):

%Vor%

Sie können dies ändern, Generika usw. hinzufügen, um andere primitive Typen zu verwenden (und diese abhängig von der Endianität der Datenbytes variieren).

    
benasher44 01.09.2016 17:17
quelle
6

In Swift 4:

Beim Extrahieren eines ganzzahligen Werts aus einem Data -Stream sind einige Dinge zu beachten. Signigness und Endianess . Also habe ich eine Funktion in einer Erweiterung von Data gefunden, die Signedness von dem Typ der zu extrahierenden Ganzzahl ableitet und Endianess und Index als Parameter übergibt. Die Arten von Ganzzahlen, die extrahiert werden können, sind alle konform mit FixedWidthInteger protocol.

Zur Erinnerung: Diese Funktion prüft nicht, ob der Index -Bereich innerhalb der Grenzen des Data -Puffers liegt, so dass er abhängig von der Größe des Typs, der in Relation zum Ende des Puffers.

%Vor%

Beispiel:

%Vor%

Ergebnisse:

number1 is 8191
number2 is 65311
number3 is -225
number4 is 8191

Beobachten Sie die Funktionsaufrufe, um zu sehen, wie der zu extrahierende Typ abgeleitet wird. Natürlich macht Endianess für Int8 oder UInt8 keinen Sinn, aber die Funktion funktioniert wie erwartet.

Werte können später bei Bedarf in Int umgewandelt werden.

    
Gustavo Seidler 14.09.2017 02:18
quelle
5

Sie können diese Methode nützlich finden, wenn Sie viel tun:

%Vor%

Die Funktion verwendet als Parameter die Startposition in den Daten, um den numerischen Typ zu lesen, und gibt einen Wert des a-Typs zurück, der von dem abgeleitet wurde, dem Sie ihn zuweisen.

Zum Beispiel:

%Vor%

liest eine 4-Byte-Ganzzahl von Position 10 in den Daten.

Wenn Sie UInt32 in UInt16 ändern, liest es zwei Bytes.

    
rghome 21.02.2016 12:27
quelle
0

Daten zu interger danke @rghome

%Vor%     
YannickSteph 06.03.2017 22:06
quelle
0

Mein Beitrag mit einer schnellen 3.1 Erweiterung:

%Vor%

Rufen Sie einfach .int auf, um Ihren Wert zu erhalten, einfach so:

%Vor%     
Kevin ABRIOUX 26.05.2017 12:46
quelle

Tags und Links