如何在objective-c中将字节值转换为int

Posted

技术标签:

【中文标题】如何在objective-c中将字节值转换为int【英文标题】:how to convert byte value into int in objective-c 【发布时间】:2011-02-12 16:57:19 【问题描述】:

请告诉我如何在 iPhone 编程中将字节转换为 Objective-c 中的 NSInteger/int?

【问题讨论】:

将字节转换为整数是什么意思? '字节'?什么样的字节?数据?细绳?网上的东西? xml?嗯? @bbum,“值”在问题标题中没有“s”。 【参考方案1】:

“字节”是什么意思? 如果要将表示整数值的单字节转换为 int(或 NSInteger)类型,只需使用“=”:

Byte b = 123;
NSInteger x;
x = b;

as Byte(同unsigned char - 1字节无符号整数)和NSInteger(同int - 4字节有符号整数)都是简单整数类型并且可以自动转换。您应该阅读有关“c 数据类型”和“转换规则”的更多信息。 例如http://www.exforsys.com/tutorials/c-language/c-programming-language-data-types.html

如果要将存储某个值的多个字节转换为 int,则转换取决于这些数据的结构:每个值有多少字节,有符号或无符号。

【讨论】:

一个objective-c问题。 NSInteger 在 NSObjCRuntime.h 中定义,NSObjCRuntime.h 中的第一个#import 是 ,所以我认为objective-c 标签是可以的。 (只是我的猜测),这个问题背后的基本原理是:刚接触 Objective-c 的人可能不会一眼看出 NSInteger 和 NSNumber 之间的区别。 NSInteger 是 typedef,而不是 Objective-C 关键字。这仍然是一个简单的 C 问题。【参考方案2】:

我的猜测:

unsigned char data[] =  0x00, 0x02, 0x45, 0x28 ;
NSInteger intData = *((NSInteger *)data);

NSLog(@"data:%d", intData); // data:675611136
NSLog(@"data:%08x", intData); // data:28450200

所以,请注意字节顺序。

【讨论】:

【参考方案3】:

如果按字节表示,你的意思是一个无符号的 8 位值,下面会做。

uint8_t foo = 3;   // or unsigned char foo...
NSInteger bar = (NSInteger) foo;

甚至

NSInteger bar = foo;

【讨论】:

对我有用的太棒了。谢谢大家,我一直在寻找如何用十六进制做到这一点。例如Sing8 foo = 0xF4 将其转换为 int【参考方案4】:
NSInteger x = 3;
unsigned char y = x;
int z = x + y;

【讨论】:

因为你把它弄反了?鉴于问题缺乏质量,仍然不值得投反对票。 y 是一个字节。 z 是一个整数。问题是“如何在objective-c中将字节值转换为int”......没关系。我会习惯的... ;-)【参考方案5】:

使用“=”运算符。

【讨论】:

你能举个小例子吗?我想知道是否有任何内置方法可以将字节转换为 int。

以上是关于如何在objective-c中将字节值转换为int的主要内容,如果未能解决你的问题,请参考以下文章

在 C 中将 int 转换为 2 字节的十六进制值

如何在c ++中将int数组转换为字节数组[重复]

如何在飞镖中将 2 个字节转换为 Int16?

在 C# 中将 int[] 转换为 byte[]

如何在目标 C 中将 NSInteger 值转换为 int 值? [复制]

如何在 Swift 中将数据转换为 Doubles、Ints 和 Strings 等类型?