同志们,我遇到个坑~~
情况是这个样子的,我有个十六进制0x0f1c00000000000000000000
我要转换成二进制,然后这个有12个Byte长度,也就是说,我得输出来是96个数,例:100...11...11
但是我发现我不知道用哪个可以来输出了,求解决方案,long 和 int 不够用。。。。
超出 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);
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。