c - 打印字符串末尾不填充 0
问题描述
我正在尝试以"Hello"
二进制形式打印字符串。
我让它工作,但是,我希望它在没有填充的情况下打印
所以
01001000 01100101 01101100 01101100 01101111
代替
01001000 01100101 01101100 01101100 01101111 00000000
这是我的代码:
char t[] = "Hello";
for (int j = 0; j < sizeof(t); j++)
{
unsigned char c = t[j];
for (int i = 7; i >= 0; i--) {
printf("%d", (c >> i) & 1 ? 1 : 0);
}
printf(" ");
}
解决方案
您可以将循环条件修改为:
for (int j = 0; t[j] != '\0'; j++)
/* ^^^^^^^^^^^^ */
目前,您循环查找所有字符t[]
,甚至包括尾随nul
字符。使用修改后的条件,您会在看到nul
负责尾随零的字符时退出循环。
+---+---+---+---+---+---+
| H | e | l | l | o |\0 |
+---+---+---+---+---+---+
T T T T T F t[i] != '\0'
sizeof(t) = 6
strlen(t) = 5
推荐阅读
- java - Java Swing removeAll() 未删除
- python - 使用 pip 安装 face_recognition 模块时出错
- css-selectors - 捕获具有数据属性的 html 元素 - javascrit ".querySelector"
- javascript - setState 不更新 React Js 中的数组状态
- javascript - 禁止模块,Discord 机器人错误.. discord.js
- git - 新版本 IntelliJ 的 git 本地更改发生了什么
- python - 调整图像内容大小但保持图像尺寸
- c# - 如何使用 OCR 从图像中读取文本
- google-chrome - 有没有办法阻止 chrome 扩展发出的所有请求
- python - 从 Conda 提示中选择 env