Objective C将具有十六进制值的NSData转换为int

Fry*_*Fry 0 int objective-c nsdata

NSData在 eg 中有一个十六进制值<EC>

现在我需要将此值转换为int变量以获取int x = -20.

想法?

Rob*_*Rob 5

您可以使用getBytes从以下内容中提取该字节NSData

uint8_t byte;
[data getBytes:&byte length:1];
Run Code Online (Sandbox Code Playgroud)

如果您确实需要在 中使用int它,请从该uint8_t变量中获取它:

int x = byte;
Run Code Online (Sandbox Code Playgroud)

顺便说一句,如果您确实需要将此0xec值解释为-20而不是236,则可以使用int8_t代替uint8_t,并且将保留此字节值的符号。然而,在处理二进制数据时,我们经常处理无符号字节,而不是有符号整数,但这仅取决于这个二进制数据NSData代表什么。

  • 我只是在输入完全相同的内容。 (2认同)