ios - 将十六进制字符串转换为 ASCII 字符串显示 00 的错误结果

标签 ios objective-c

下面是我的十六进制到 ASCII 转换的方法

-(NSString*)getASCIIString:(NSString*)strHex
{
    NSMutableString *strAscii = [NSMutableString string];
    for (int i=0;i<24;i+=2) {
        NSString *charValue = [strHex substringWithRange:NSMakeRange(i,2)];
        unsigned int _byte;
        [[NSScanner scannerWithString:charValue] scanHexInt: &_byte];
        if (_byte >= 32 && _byte < 127) {
            [strAscii appendFormat:@"%c", _byte];
        } else {
            [strAscii appendFormat:@"[%d]", _byte];
        }
    }
    NSLog(@"Hex: %@", strHex);
    NSLog(@"Ascii: %@", strAscii);
    return strAscii;
}

上面的方法将十六进制字符串转换为 ASCII,但我注意到一种情况给了我错误的结果,如下所示:

十六进制:4E4932313533000000000066 Ascii : NI2153[0][0][0][0][0]f(错误)

为什么 00 我得到 [0]。 ?

我的方法工作得很好,只有当十六进制字符串中有 00 时,正如我提到的,我在 Ascii 字符串中得到 [0] 。

请告诉我经过测试的完美转换方法。

最佳答案

如果十六进制字符串是00,你在_byte中得到值0,因此你在else分支,得到[0] 作为 [strAscii appendFormat:@"[%d]", _byte] 的结果;

关于ios - 将十六进制字符串转换为 ASCII 字符串显示 00 的错误结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45477573/

相关文章:

ios - NSTimer 不调用方法

objective-c - 停止 UIView 动画

objective-c - UIView 的边界大小与帧大小

ios - 代码=-1011“请求失败: internal server error (500)

ios - 如何注册 cocoa 应用程序以接收远程通知以更新用户界面?

objective-c - NSNumberFormatter 四舍五入为负零

ios - 如何解决代码中出现的 "PCH file not found"错误?

iphone - 访问模拟器的 NSLibraryDirectory 时出现 NSFileNoSuchFileError

ios - 点击时 UIButton 不显示任何效果?

ios - 如何在不影响 UICollectionViewCell 的不透明度的情况下设置 UICollectionView 背景的不透明度?