本帖最后由 q_T_p 于 2011-07-08 15:51 编辑 eg: uint8_t u1=0xff,u2=0xff,u3=0xff,u4=0xff; char str[]="ab-cd"; 我开始使用如下代码: sscanf(str,"%x-%x",&u2,&u3); 执行结果 u2 == ab,u3=cd; 但是: u1或u2(根据系统不同而不同,因为栈的增长方向)的值被改变,变为零。 所以这里发生了越界。 我想问各位大侠有木有合适的格式转换符来做这个事情,是%什么。
本帖最后由 firecityplans 于 2011-12-15 21:12 编辑 本人菜鸟,最近要编个小程序,遇到如题目所述的情况:[code] uint16_t groupID = 65535; uint16_t iedID = 2345; uint16_t dotID = 6; byte_t key_1[7]; key_1[1] = (byte_t)iedID&0xFF; key_1[2] = (byte_t)(iedID>>8)&0xFF; key_1[3] = (byte_t)groupID&0xFF; key_1[4] = (byte_t)(groupID>>8)&0xFF; key_1[5] = (byte_t)dotID&0xFF; key_1[6] = (byte_t)...
现在我有一个uint32的值a = 0xb0010101 我想把它赋给一个octet string变量b, 也就是说,想得到b的值为11.1.1.1 该如何做?
这应该是OE gsp.h的一个bug了,解决之道 #ifdef linux #define uint32_t int #endif 就搞定了 本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/32610/showart_281973.html
本帖最后由 newroot_phy 于 2010-12-29 13:58 编辑 读写一个8bit的char需要加锁吗?!在什么具体环境下,为什么! 前些天跟朋友讨论了这个问题,朋友说在汇编级别上,一个读操作也是有多条指令的,所以也是有可能被中断的! 以前我一直以为读写一个int, char之类的数据是不需要加锁的,我也是从外部(网络)了解到这个观点,没有什么理论依据,所以请大家指点! ----------------- 1. 修改主题
如果编译成64位的程序,int32_t类型的变量真的就只占用4字节内存么?和编译器有无关系? stdint.h中是这么定义这个类型的 typedef int int32_t; 编译器是不是还按int处理,给1个字长了事呀?
我用了%lu、%ld都不行,用%lu是提示:warning: format ‘%lu’ expects type ‘long unsigned int’, but argument 3 has type ‘uint64_t’ 请问应该用什么才能打印出uint64_t类型的数据?操作系统是32位的centOS。
我使用的是MAC OS, 用XCODE, 当我在工程中加入一个汇编文件(asm),而且编译通过后,发现工程中的C文件的double强制类型转uint64_t(long long)类型全部挂掉,转出的值都为0x8?????????,请问有没有好的方法解决, 而且还使得与这个动态库无关的另一个动态库计算出来的结果全部错误.