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

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

【问题讨论】:

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

标签: objective-c iphone c integer byte


【解决方案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。
    猜你喜欢
    • 2011-02-10
    • 2013-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-27
    • 2017-01-06
    相关资源
    最近更新 更多