如何在没有标准库的情况下将多个数字合并为一个数字,例如 4,0,0 到 400 [关闭]

分享于2022年09月08日 bit-shift c 问答
【问题标题】:How to merge multiple numbers into one number like 4,0,0 into 400 without stdlib [closed]如何在没有标准库的情况下将多个数字合并为一个数字,例如 4,0,0 到 400 [关闭]
【发布时间】:2022-08-01 22:52:13
【问题描述】:

我正在尝试解析具有以下数据的文件,例如:

MAGICNUMBER 400

4 = 0x34 0 是 = 0x30

4 0 0 是不同的无符号字符

我想要的是那些不同的字符被转换成

unsigned int x = 400;

当将它们解析到我的程序中时,我想将它们合并为一个整数,我尝试了位移,但它没有用,我可能做错了,并且得到了一个非常大的数字,可能是由于对某些事情的误解,我应该做什么合并这些数字而不使用字符串技巧并且不使用std,而只使用bitshift并解释它是如何工作的?

    <1234563>
    “我试过移位,但没有用” 请发布您尝试过的代码。
    <1234563>
    位移与此有什么关系。并不是说您找不到使用它的方法,而是您为什么要这样做?

【解决方案1】:

每个数字是 c - '0' 。当你得到一个新数字时,你知道之前的数字要大一位小数,所以你将当前数字乘以 10 并添加新数字:

char *s = "400";
int sum = 0;

while(*s >= '0' && *s <= '9') {
    sum = 10 * sum + (*s - '0');
    s++;
}

【讨论】: