如何在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 是我的猜测:
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的主要内容,如果未能解决你的问题,请参考以下文章