Mac 下如保查看二进制文件,比如.heic文件

如题,介绍下如何在mac下查看二进制文件,以.heic heif文件举例。
 

1. heif 文件格式判断
 

+ (SDImageFormat)sd_imageFormatForImageData:(nullable NSData *)data {
    if (!data) {
        return SDImageFormatUndefined;
    }
    
    // File signatures table: http://www.garykessler.net/library/file_sigs.html
    uint8_t c;
    [data getBytes:&c length:1];
    switch (c) {
        case 0xFF:
            return SDImageFormatJPEG;
        case 0x89:
            return SDImageFormatPNG;
        case 0x47:
            return SDImageFormatGIF;
        case 0x49:
        case 0x4D:
            return SDImageFormatTIFF;
        case 0x52: {
            if (data.length >= 12) {
                //RIFF....WEBP
                NSString *testString = [[NSString alloc] initWithData:[data subdataWithRange:NSMakeRange(0, 12)] encoding:NSASCIIStringEncoding];
                if ([testString hasPrefix:@"RIFF"] && [testString hasSuffix:@"WEBP"]) {
                    return SDImageFormatWebP;
                }
            }
            break;
        }
        case 0x00: {
            if (data.length >= 12) {
                //....ftypheic ....ftypheix ....ftyphevc ....ftyphevx
                NSString *testString = [[NSString alloc] initWithData:[data subdataWithRange:NSMakeRange(4, 8)] encoding:NSASCIIStringEncoding];
                if ([testString isEqualToString:@"ftypheic"]
                    || [testString isEqualToString:@"ftypheix"]
                    || [testString isEqualToString:@"ftyphevc"]
                    || [testString isEqualToString:@"ftyphevx"]) {
                    return SDImageFormatHEIC;
                }
                if ([testString isEqualToString:@"ftypmif1"] || [testString isEqualToString:@"ftypmsf1"]) {
                    return SDImageFormatHEIF;
                }
            }
            break;
        }
    }
    return SDImageFormatUndefined;
}

摘自SDWebImage,
https://github.com/SDWebImage/SDWebImage/blob/3378cc38d44e95cdd474c50fe9e9e14fafa1098b/SDWebImage/NSData%2BImageContentType.m
 

如代码,heif判断需要读取 *.heic *.heif 文件,判断二进制数据,第0个字节为 0x00,第4~11 个字节为ftypheic
ftypheix、ftyphevc、ftyphevx、ftypmif1、ftypmsf1即为heif。

 

2. 通过ios 13机器拍一张heif,导出,如保查看是否是heif呢?
 

Mac下的 Sublime Text的插件包里面有一个HexViewer,可以查看二进制文件。
操作:
(1)打开sublime Text;
(2)Command+Shift+P,选择“Package Control: Install Package”安装插件
(3)安装完会打开一个窗口,在窗口搜索“HexViewer”并等待安装成功;
(4)打开要查看的二进制文件,默认没有以HexViewer模式打开;
(5)Command+Shift+P,搜索并选择HexViewer: Toggle Hex View,回车即可

效果如下图

 

heif的图片文件可以拿一台ios 13机器拍一张,或者直接拿现有的,参见这里的资源https://download.csdn.net/download/minibird1/10273244

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值