linux c中的byte转换成short
来源:互联网 发布:程序员手机壁纸1080 编辑:程序博客网 时间:2024/04/28 06:59
void say(){ char s[20] = {0x80,0x00,0xf3,0xf4,0x00,0x2a}; char * temp = s; int i = 0; for(i = 0;i<6;) { short s1 = (short)((temp[i] << 8) + (temp[i+1] << 0)); i = i +2; printf("%d\n",s1); } //printf("%s",s); /** int *i; i = (int *)s; printf("%s\n",s); printf("%d\n",*i); **/ }
这解释下这个函数式干吗使用的:
我们定义了6个Char类型(char是单字节的 占8bit即&&&& &&&& &代表0或者1)的数值,而现在我们看到了是将这个char类型的给合成一个short数值,在linux中是没有Byte这个类型的我们就用char类型来代替它。
所以我们的意图很明显就是要在取到的数组中,取两个char(Byte字节)的数值。
所以我们看打印出来的东西:
-32768-334042其中第三个是小数值的来解释下吧:
0x00,0x2a 是十六进制数,其中第一个是左移8个字节(0000 0000 ***** ****),后面是 0010 1010合起来
0000 0000 **** ****
0010 1010
可不就是42么,怎么还有负值呢,第一位是符号位呗
以0x80,0x 00为例吧
0x 80 1000 0000
0x 00 0000 0000
这个明明是32768好吧,怎么回事啊,会是负值呢,其实我们忘记了符号为了,其实这前面还有符号位1,就是负值了,
unsigned short 的范围:0~65535
short 的范围:-32768~32767
short 的范围:-32768~32767
负数的二进制数有点特殊啊:
*******************************************************************************************************************
负数的二进制表示是绝对值取反加1.
可以先把十进制的绝对值转化为16进制数,然后再每位10进制转化为4位二进制位,再取反,最后末位加1即为对应的二进制数。
例如:-10
1.绝对值为10,对应16进制为A,则二进制位0000 0000 0000 1010
2.二进制取反为1111 1111 1111 0101
3.末位加1为 1111 1111 1111 0110, 即为-10的二进制表示。
可以先把十进制的绝对值转化为16进制数,然后再每位10进制转化为4位二进制位,再取反,最后末位加1即为对应的二进制数。
例如:-10
1.绝对值为10,对应16进制为A,则二进制位0000 0000 0000 1010
2.二进制取反为1111 1111 1111 0101
3.末位加1为 1111 1111 1111 0110, 即为-10的二进制表示。
**********************************************************************************
- linux c中的byte转换成short
- int short byte转换
- byte[] int[] short[] 转换
- unsigned short 类型转换成4字节Byte数字
- byte数组转换成double,int ,short类型
- short数组 到 byte 数组的转换
- byte数组转换为short,int
- android byte[] 和short[]的转换
- <Java>byte与short互相转换
- android byte[] 和short[]的转换
- byte、short、char和int的转换
- java-int&short-byte类型转换问题
- java byte数组与int,long,short,byte转换
- java byte数组与int,long,short,byte转换
- byte[]到short、int、long的相互转换
- byte[]到short、int、long的相互转换
- byte[]到short、int、long的相互转换
- short,int,long与byte数组之间的转换
- 转载的男人
- winfrom 小技巧
- WinMend products
- Android build过程中already defined by packages/apps 的解决方法
- SurfaceView里onKeyDown里KEYCODE_BACK失效
- linux c中的byte转换成short
- [每日一学]MFC学习笔记——简单计算器
- byte[]和InputStream的相互转换
- 学习python,从学习安装开始!
- sphinx的代码结构分析
- 去掉文件夹中.svn目录
- C语言删除文件夹下的目录
- 计算机专业考研方向及院校排名(转)
- 上一根烟.点上心里的想念 伤感日志