【问题标题】:8 bit hex string to signed integer8 位十六进制字符串到有符号整数
【发布时间】:2014-10-19 19:46:16
【问题描述】:

我有一个 8 位十六进制值,例如:“FB”(-5)。现在我需要这个十六进制的有符号整数值。 NSScanner 不能在这个地方工作,因为你需要一个 4 字节的十六进制值,才能得到它的负数。在我开始进行一些操作之前,也许你们中的某些人知道更好的方法?

【问题讨论】:

    标签: objective-c hex nsscanner


    【解决方案1】:

    类型转换并不安全,但你确实需要它。

    NSString *tempNumber = @"FB";
    NSScanner *scanner = [NSScanner scannerWithString:tempNumber];
    unsigned int temp;
    [scanner scanHexInt:&temp];
    int actualInt = (char)temp; //why char because you have 8 bit integer
    NSLog(@"%@:%d:%d",tempNumber, temp, actualInt);
    

    控制台输出:FB:251:-5

    【讨论】:

    • 还有一件事。我也有一个 16 位的 Int,它也可以是负数。在这种情况下该怎么做? Cast 不再起作用了?
    • 也许我真的需要另辟蹊径,取反值,然后增加 1 之类的东西?
    • 对于 16 bit 整数,您可以将其转换为 short int,即“16 位”(在 32 位模拟器和 64 位模拟器上测试)。尽管short int 的大小取决于编译器的实现。一般是short int <= int <= long int
    猜你喜欢
    • 2013-09-06
    • 2016-03-08
    • 2017-08-07
    • 1970-01-01
    • 2021-08-13
    • 2021-03-07
    • 2011-06-15
    • 2018-08-30
    • 2014-05-05
    相关资源
    最近更新 更多