gpt4 book ai didi

使用类型转换将 char 转换为 int 在 C 中使 1s 变为 49 和 0s 变为 48?

转载 作者:行者123 更新时间:2023-12-01 21:35:20 28 4
gpt4 key购买 nike

我有一个由二进制值组成的单字节字符数组,我试图将它拆分成一个二维 int 数组(低 nybble 和高 nybble)。这是我的代码:

int nybbles[2][4]; //[0][] is low nybble, [1][] is high nybble.
for (int i = 0; i < 4; i++) {
nybbles[0][i] = (int)binarr[i];
nybbles[1][i] = (int)binarr[4 + i];
printf("%c%d ", binarr[i], nybbles[0][i]);
printf("%c%d\n", binarr[4 + i], nybbles[1][i]);
}

这个的输出是:

048
149
048
048
149
048
048
048

我可以通过在两行代码的末尾添加“- 48”来轻松解决此问题,如下所示:

nybbles[0][i] = (int)binarr[i] - 48;
nybbles[1][i] = (int)binarr[4 + i] - 48;

但是,我认为这是一个非常强力的解决方案。为什么这个问题仍然存在?有没有比我更好的修复方法?

最佳答案

值 48 和 49 是字符 '0''1' 的 ASCII 码。

不是减去 48,而是减去 '0'。这让您更清楚自己在做什么。

nybbles[0][i] = binarr[i] - '0';
nybbles[1][i] = binarr[4 + i] - '0';

关于使用类型转换将 char 转换为 int 在 C 中使 1s 变为 49 和 0s 变为 48?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62029393/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com