Tag: int

将2个char转换为1个int

我有2个字符:HIGH和LOW,我想把它们转换成一个对应HIGH的int +来自LOW的2个左位。 我试过像以下一样: unsigned char high; unsigned char low; high = 128; // 10000000 low= 128; // 10000000 int result; (should be high 10000000 + 2 left bites of low 10 = 1000000010) // To do return result; 编辑更清晰。 我选择的解决方案是: return high*4 + (low >> (CHAR_BIT – 2));

C编程:将Hex Int转换为Char *

我的问题是如何转换像: int i = 0x11111111; 一个字符指针? 我尝试使用itoa()函数,但它给了我一个浮点exception。

为什么size_t当int足以满足数组的大小?

C标准保证int能够存储每个可能的数组大小。 至少,这是我从阅读§6.5.2.1,第1小节(数组下标约束)中理解的内容: 其中一个表达式应具有类型”指向对象类型的指针”,另一个表达式应具有整数类型,结果具有类型”type”。 既然我们将int s用作数组下标,为什么我们应该使用size_t来确定数组的大小? 为什么strlen()在int足够时返回size_t ?

C UINT16如何搞定?

我是C编程的新手,我正在测试一些代码,我收到并处理格式化如下的UDP数据包: UINT16 port1 UINT16 port2 此测试的相应值为: 6005 5555 如果我打印整个数据包缓冲区,我得到这样的东西: u^W³^U>^D 所以我认为我只需要打破它并处理为16字节的unsigned int 。 所以我尝试过这样的事情: int l = 0; unsigned int *primaryPort = *(unsigned int) &buffer[l]; AddToLog(logInfo, “PrimaryPort: %u\n”, primaryPort); l += sizeof(primaryPort); unsigned int *secondaryPort = *(unsigned int) &buffer[l]; AddToLog(logInfo, “SecondaryPort: %u\n”, secondaryPort); l += sizeof(secondaryPort); 但我得到8位数的错误数字。 我甚至尝试了另一种方法,如跟随,但也得到错误的数字。 int l = 0; unsigned char primaryPort[16]; […]

C – 检查是否分配了整数

如何确定是否取消分配整数? int i; /* no assignment */ if (/* conditional statement here to check if int i is unassigned or not */) { printf(“Integer is unassigned!\n”); } else { printf(“Integer is assigned!\n”); }

如果bool是int的宏,为什么它的大小不同?

我希望有人可以解释原因 #include printf(“size of bool %d\n”, sizeof(bool)); printf(“size of int %d\n”, sizeof(int)); 输出到 size of bool 1 size of int 4 我看过http://pubs.opengroup.org/onlinepubs/009695399/basedefs/stdbool.h.html这似乎表明bool本质上是_Bool的一个宏,当设置为true或false时,它真的只是一个整数常量的宏。 如果是整数,为什么它的大小不一样? 我问,因为我们花了太长时间来调试我们没有分配足够内存的程序。

long和int的历史背景通常是相同的大小?

根据这里的众多答案 , long和int在C和C ++(Windows和Linux,32和64位)的通用平台上都是32位大小(我知道没有标准,但实际上,这些都是观察到的尺寸。) 所以我的问题是,这是怎么发生的? 为什么我们有两种尺寸相同的类型? 我以前总是假设大部分时间都是64位,而且是32位。我不是说“应该”是这样或那样的,我只是好奇我们是如何到达这里的。

将字符串转换为signed int

我想将字符串转换为signed int。 以下是要求。 我已将hex值存储为缓冲区中的字符串。 现在我想将该值转换为signed int。 buf = “fb869e”将其转换为signed int。 所以o / p应该是-293218。 但是当我试图使用strtol进行转换时,我得到的是16483998.所以我该怎么办?

将int写入C中的二进制文件时出现问题

我需要使用C的I / O函数将数据写入二进制文件。 以下代码导致运行时exception: #include “stdio.h” int main(int argc,char* argv[]) { FILE *fp = fopen(“path_to_file.bin”,”wb”); if(fp == NULL) { printf(“error creating file”); return -1; } int val = 4; fwrite((const void*)val,sizeof(int),1,fp); fclose(fp); return 0; } 代码在fwrite处死掉。 你能发现我做错了什么吗? 显然,我正试图访问0x0000004或类似的数据。 谢谢 !

在C中打印指针地址

我知道我的问题非常简单,但谷歌他们并没有给我任何有用的结果……他们可能太简单了!! 第1名 char* createStr(){ char* str1 = malloc(10 * sizeof(char)); printf(“str1 address in memory : %p\n”, &str1); return str1; } int main(void){ char* str2 = createStr(); printf(“str2 address in memory : %p\n”, &str2); } 结果: str1 address in memory : 0x7fffed611fc8 str2 address in memory : 0x7fffed611fe8 为什么地址不同于createStr()函数以及如何释放(str1)? 第2号 int main(int argc, int *argv[]){ printf(“Basename […]