问题在于我猜的标题.
这是我提出的临时解决方案,但我想知道:
欢迎所有建议......
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
/* compile with
gcc -lm -std=c99
*/
void binary_repr(unsigned long input) {
int needed_digits = (int) (floor(log2(input)) + 1);
char *ptr_binarray = malloc((needed_digits + 1) * sizeof (char));
int idx = (needed_digits);
if (ptr_binarray == NULL) {
printf("Unable to allocate memory.");
exit(1);
}
else {
do {
idx--;
if (input % 2 == 0) {
ptr_binarray[idx] = '0';
}
else {
ptr_binarray[idx] = '1';
}
input = input / …Run Code Online (Sandbox Code Playgroud) 我到处都看了一下,但是没有找到问题的答案。首先,我知道十进制%d的符号是%o,八进制的符号是,十六进制的符号是%x。但是,我找不到二进制的符号。我将不胜感激任何帮助。
我对 C 比较陌生。我有一个要打印到标准输出的二进制缓冲区,如下所示:
unsigned char buffer[1024];
Run Code Online (Sandbox Code Playgroud)
有没有办法使用 printf 将其输出到 stdout?我查看了 printf 的手册页,但是没有提到 an unsigned char*,只有const char*for %s。
我想我可以遍历缓冲区并执行putchar(buffer[i]),但是我认为这效率很低。有没有办法使用 printf 做到这一点?我应该改用类似的东西fwrite,那会更合适吗?
谢谢。
编辑:抱歉造成混乱,我不想将任何内容转换为十六进制/二进制表示法,只需按原样写出缓冲区即可。例如,如果我[0x41 0x42 0x42 0x41]在缓冲区中,那么我想打印“ABBA”。
我创建了一个64*64大小的hadamard字符矩阵,现在想将矩阵每行的二进制值(即64位二进制数)传递给数组(查找).执行此操作的代码是main函数底部的double for循环.
当我执行一个列表时,使用这里的代码打印,而不是完整的二进制值.
#include <stdio.h>
#include <stdlib.h>
void create_hadamard_matrix(char** h, int N)
{
int ind,indr,indc;
for (ind=1;ind<=N;ind*=2)
{
// find the half length of H matrix for this iteration
int sideHalf=ind/2;
//for n=1 H matrix
if (ind==1)
{
h[0][0]='1';
}
else
{
//put in values in bottom left of new H matrix
for (indr=0; indr<sideHalf; indr++)
{
for (indc=0; indc<sideHalf; indc++)
{
h[indr+sideHalf][indc]=h[indr][indc];
}
}
//put in values in top right of new H matrix
for (indr=0; indr<sideHalf; indr++)
{ …Run Code Online (Sandbox Code Playgroud) 给出以下 C++ 代码片段:
char a = 0x0a;
char b = 0x80;
char c = a ^ b;
Run Code Online (Sandbox Code Playgroud)
屏幕后面会发生什么?当我用cout输出c时,没有输出。char a 和 char b 会转换为二进制格式吗?c的格式是什么?
人们可以快速学习以下形式的命令,例如 C 语言中的命令
printf("%d", x);
Run Code Online (Sandbox Code Playgroud)
或者
printf("%lu", x);
Run Code Online (Sandbox Code Playgroud)
但是对于x的二进制表示形式,不存在%lu或%d的类似物。
我的问题首先是为什么会这样,其次是在什么时候(在哪个抽象级别)二进制表示形式会转变为十进制或十六进制?
Stack 网络上的类似点似乎只能引出特定于语言的答案或实现/库建议。然而,我的问题是关于我对数据如何抽象的整体理解,以及操作系统是否见过二进制文件,或者是否有比操作系统更低级别的东西覆盖它。
为了进一步强调我的方向,考虑一个切题的问题:以十六进制编程源文件比以十进制编程(例如在常量或变量初始化期间)对性能(速度或存储)有任何好处吗?
如何制作输出NOT(x)的程序?
例:
解释:
01至10
printf("%i\n%i\n%i\n", ~12, ~0, ~2);
打印:
-13
-1
-3
printf("%i\n%i\n%i\n", !12, !0, !2);
Run Code Online (Sandbox Code Playgroud)
打印:
0
1
0
Run Code Online (Sandbox Code Playgroud)