如果我有一个数字字符串(字符数组),一个数字是一个字符,导致四位数字的空间是5个字节,包括空终止。从数字字符串获取位
unsigned char num[] ="1024";
printf("%d", sizeof(num)); // 5
然而,1024可以写成
unsigned char binaryNum[2];
binaryNum[0] = 0b00000100;
binaryNum[1] = 0b00000000;
如何从字符串到二进制转换来有效地使? 在我的程序中,我会使用≈30位数字,所以空间增益会很大。 我的目标是创建通过UDP/TCP发送的数据包。
我不希望使用库来执行此任务,因为代码可用的空间很小。编辑: 感谢您的快速回复。
char num = 0b0000 0100 // "4"
--------------------------
char num = 0b0001 1000 // "24"
-----------------------------
char num[2];
num[0] = 0b00000100;
num[1] = 0b00000000;
// num now contains 1024
我需要≈10个字节来包含我的二进制形式的数字。因此,如果我建议从后面开始逐个解析数字,那么如何构建最终的大二进制数?
首先,'sizeof'返回一个'size_t'数量,即'长unsigned'。最好在printf中使用'“%lu”'。 – Boiethios
不知道我是否完全理解了这个问题,但是您是否考虑过对数字进行数字解析?你可以从char中减去'0',你会得到一个数字 –
为什么你不使用'atoi'? – Boiethios