用32位int型变量表示单引号括起来的四个字符的深入探讨
在C、C++中可以用32位int型变量表示单引号括起来的四个字符,例如下面代码中的示例:
代码如下:
// 字符c的16进制值是0x63,字符o的16进制值是0x6f,
// 字符n的16进制值是0x6e
int what = 'conn';
printf("The address of what is 0x%x \n", &what);
printf("what 0x%x \n", what);
if (what == 0x636f6e6e) {
printf("what is 0x636f6e6e \n");
}
char *p = "conn";
printf("p points to [%s] \n", p);
while (*p != 0) {
printf("%x", *p);
p++;
}
运行结果如下:
The address of what is 0x12ff60
what 0x636f6e6e
what is 0x636f6e6e
p points to [conn]
636f6e6e
也就是说字符'conn'的值用16进制表示就是0x636f6e6e,两者是等价的。
在Android的framework层用到了这种方法来表示message的值。
其中'conn'的存储方式是小端存储。
即:小端:较高的有效字节存放在较高的的存储器地址,较低的有效字节存放在较低的存储器地址可以直接查看内存中'conn'的存储方式是小端存储,
地址从低到高依次是:0x12ff60,0x12ff61,0x12ff62,0x12ff63。
存储的字符依次是:n, n, o, c
最后一个n存在最低位,c存在最高位。
相关推荐
-
用32位int型变量表示单引号括起来的四个字符的深入探讨
在C.C++中可以用32位int型变量表示单引号括起来的四个字符,例如下面代码中的示例: 复制代码 代码如下: // 字符c的16进制值是0x63,字符o的16进制值是0x6f, // 字符n的16进制值是0x6e int what = 'conn'; printf("The address of what is 0x%x \n", &what); printf("what 0x%x \n", what); if (what == 0x636f6e6e) {
-
JavaScript 32位整型无符号操作示例
在 JavaScript 中,所有整数字变量默认都是有符号整数,这意味着什么呢? 有符号整数使用 31 位表示整数的数值,用第 32 位表示整数的符号,0 表示正数,1 表示负数. 数值范围从 -2^31 - 2^31-1 即 -2147483648 到 2147483647. JavaScript 进行位操作时,是采用32位 有符号 整型,这意味着其转换的结果也是32位有符号整型. 有些时候,我们进行移位会出现意想不到的结果,以下是C语言 与 JS 的对比. C语言 复制代码 代码如下: un
-
C语言中交换int型变量的值及转换为字符数组的方法
不使用其他变量交换两个整型的值: #include <stdio.h> void main(){ int a = 3; int b = 4; a = a ^ b;//使用异或交换 b = b ^ a; a = a ^ b; printf("%d, %d\n", a, b); a = a - b;//使用加减交换 b = a + b; a = b - a; printf("%d, %d\n", a, b); a ^= b ^= a ^= b; printf
-
PHP和MySql中32位和64位的整形范围是多少
一个字节有8位,所以32位int型占用32位/8位=4个字节,64位int型占用64位/8位=8个字节. 32位,64位无符号整型最大值: 2^64-1 = 18446744073709551615 2^32-1 = 4294967295 32位,64位有符号整型最大值: (2^32)/2-1 = 2147483647 (2^64)/2-1 = 9223372036854775807 减1是因为整型包括0. 64位Ubuntu 14.04,PHP_INT_MAX的值为92233720368547
-
Java利用移位运算将int型分解成四个byte型的方法
package 移位运算; public class 移位运算 { public static void main(String[] args) { //00000111 01011011 11001101 00010101 int n=123456789; //n为需要进行移位处理的32位int型初始值 byte[] a =chai(n); for (int i = 0; i < a.length; i++) { byte b=a[i]; System.out.print(b+" &qu
-
C语言简明讲解单引号与双引号的使用
目录 一.单引号和双引号 二.小贴士 三.程序实例分析1 四.程序实例分析2 五.容易混淆的代码 六.小结 一.单引号和双引号 C语言中的单引号用来表示字符字面量 C语言中的双引号用来表示字符串字面量 'a'表示字符字面量,在内存中占1个字节,'a'+1表示'a'的ASCII码加1,结果为'b' "a"表示字符串字面量,在内存中占2个字节,"a"+1表示指针运算,结果指向"a"结束符'\0' 下面看一段单引号和双引号本质的代码: #include
-
Shell双引号和单引号有哪些不同
1.示例 Shell在使用的过程中,经常会使双引号或者单引号将字符串括起来,也可以不使用引号来定义字符串变量.示例如下: str1="testString" //双引号 str2='testString' //单引号 str3=testString //无引号 因此字符串变量的定义有三种方式,分别是双引号.单引号和无引号.这三种方式有什么区别呢?单引号和双引号又有什么区别呢? 2.单引号 单引号定义字符串所见即所得,即将单引号内的内容原样输出,或者描述为单引号里面看到的是什么就会输出什
-
c++ 判断是64位还是32位系统的实例
1.IsWow64Process 确定指定进程是否运行在64位操作系统的32环境(Wow64)下. 语法 BOOL WINAPI IsWow64Process( __in HANDLE hProcess, __out PBOOL Wow64Process ); 参数 hProcess 进程句柄.该句柄必须具有PROCESS_QUERY_INFORMATION 或者 PROCESS_QUERY_LIMITED_INFORMATION 访问权限 Wow64Process 指向一个bool值, 如果该
-
windows 32位eclipse远程hadoop开发环境搭建
本文假设hadoop环境在远程机器(如linux服务器上),hadoop版本为2.5.2 注:本文eclipse/intellij idea 远程调试hadoop 2.6.0主要参考了并在其基础上有所调整 由于我喜欢在win7 64位上安装32位的软件,比如32位jdk,32位eclipse,所以虽然本文中的操作系统是win7 64位,但是所有的软件都是32位的. 软件版本: 操作系统:win7 64位 eclipse: eclipse-jee-mars-2-win32 java: 1.8.0_
-
解决mysql的int型主键自增问题
引入 我们在使用mysql数据库时,习惯使用int型作为主键,并设置为自增,这既能够保证唯一,使用起来又很方便,但int型的长度是有限的,如果超过长度怎么办呢? 暴露问题 我们先创建一个测试表,创建语句如下: CREATE TABLE test1 ( id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(20) ) 然后我们插入两条数据: INSERT INTO test1 VALUES(NULL,'小牛'); INSERT INTO test1 VAL
随机推荐
- Oracle存储过程基本语法介绍
- JS继承--原型链继承和类式继承
- 基于Vue实现tab栏切换内容不断实时刷新数据功能
- 用Vue.extend构建消息提示组件的方法实例
- 基于自定义Unity生存期模型PerCallContextLifeTimeManager的问题
- android从资源文件中读取文件流并显示的方法
- jQuery结合PHP+MySQL实现二级联动下拉列表[实例]
- python获取文件后缀名及批量更新目录下文件后缀名的方法
- 基于Android中实现定时器的3种解决方法
- C#如何实现对sql server数据库的增删改查
- Android ViewDragHelper仿淘宝拖动加载效果
- 解析PHP跳出循环的方法以及continue、break、exit的区别介绍
- JS回调函数的应用简单实例
- ES6学习教程之对象的扩展详解
- Python基于scapy实现修改IP发送请求的方法示例
- 微信小程序 ecshop地址三级联动实现实例代码
- 自定义jquery模态窗口插件无法在顶层窗口显示问题
- jQuery中事件对象e的事件冒泡用法示例介绍
- IIS无法显示中文名称图片问题的解决方法
- Java mail 发送邮件的具体实例