开发者社区> 问答> 正文

iOS 取值范围问题 急

同志们,我遇到个坑~~
情况是这个样子的,我有个十六进制0x0f1c00000000000000000000
我要转换成二进制,然后这个有12个Byte长度,也就是说,我得输出来是96个数,例:100...11...11
但是我发现我不知道用哪个可以来输出了,求解决方案,long 和 int 不够用。。。。

展开
收起
a123456678 2016-07-27 11:29:32 1925 0
2 条回答
写回答
取消 提交回答
  • 余轶 ![](https://yqfile.alicdn.com/)
    2019-07-17 20:00:28
    赞同 展开评论 打赏
  • 超出 64 bit 范围的数组已经无法用一个基础类型表达了,写一个 uint8_t[] 来存这个大数字,用 Big-Endian 的字节序。

    #include <stdint.h>
    
    uint8_t numbers[] = {0x0f, 0x1c, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
    char bytes[97];
    uint8_t current;
    
    for (size_t i = 0; i < sizeof(numbers); i++) {
        current = numbers[i];
    
        for (size_t j = 0; j < 8; j++) {
            bytes[i * 8 + 7 - j] = (current & 1)? '1': '0';
            current >>= 1;
        }
    }
    
    bytes[96] = '\0';
    NSLog(@"numbers: %s", bytes);
    2019-07-17 20:00:28
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载