进制转换,16进制与float互转
#include <winsock.h>
#pragma comment(lib, "Ws2_32.lib")//将一个8位数高低4位交换
static unsigned char bswap_8(unsigned char v)
{return ((v & 0xff) << 4) | (v >> 4); //将参数(v & 0xff) << 4 相当于放到高位, v >> 4 位相当于放在低位
}//将一个16位数高低8位交换
static unsigned short bswap_16(unsigned short v)
{return ((v & 0xff) << 8) | (v >> 8);
}//将一个32位数高低16位交换
static unsigned int bswap_32(unsigned int v)
{return ((v & 0xff) << 24) | ((v & 0xff00) << 8) |((v & 0xff0000) >> 8) | (v >> 24);
}enum DataByteOrder
{ABCD,DCBA,BADC,CDAB
};float get_float_databyteorder(const uint16_t *src, DataByteOrder order)
{float f = 0;uint32_t i;switch (order){case ABCD:i = ntohl(((uint32_t)src[0] << 16) + src[1]);memcpy(&f, &i, sizeof(float));break;case DCBA:i = ntohl(bswap_32((((uint32_t)src[0]) << 16) + src[1]));memcpy(&f, &i, sizeof(float));break;case BADC:i = ntohl((uint32_t)(bswap_16(src[0]) << 16) + bswap_16(src[1]));memcpy(&f, &i, sizeof(float));break;case CDAB:i = ntohl((((uint32_t)src[1]) << 16) + src[0]);memcpy(&f, &i, sizeof(float));break;default:break;}return f;
}void set_float_databyteorder(float f, DataByteOrder order, uint16_t *dest)
{uint32_t i;switch (order){case ABCD:memcpy(&i, &f, sizeof(uint32_t));i = htonl(i);dest[0] = (uint16_t)(i >> 16);dest[1] = (uint16_t)i;break;case DCBA:memcpy(&i, &f, sizeof(uint32_t));i = bswap_32(htonl(i));dest[0] = (uint16_t)(i >> 16);dest[1] = (uint16_t)i;break;case BADC:memcpy(&i, &f, sizeof(uint32_t));i = htonl(i);dest[0] = (uint16_t)bswap_16(i >> 16);dest[1] = (uint16_t)bswap_16(i & 0xFFFF);break;case CDAB:memcpy(&i, &f, sizeof(uint32_t));i = htonl(i);dest[0] = (uint16_t)i;dest[1] = (uint16_t)(i >> 16);break;default:break;}
}int main(int argc, char *argv[])
{float f1 = 12.34;uint16_t dst[2];set_float_databyteorder(f1, ABCD, dst);float f2 = get_float_databyteorder(dst, ABCD);return 0;
}
进制转换,16进制与float互转相关推荐
- linux c int16进制转10进制,[编程题] 进制转换(16进制转10进制)
[编程题] 进制转换 3/3 [编程题] 进制转换 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M 写出一个程序,接受一个十六进制的数,输出该数值的十进制表示. ...
- 10进制转换16进制补足0_信息技术教师资格必考内容——进制换算(一)
前两天给大家整理了信息技术教师资格笔试科目三的必考内容,戳蓝字回顾弄懂这些,信息技术教师资格笔试提高30分!信息技术教师资格笔试--这道20分的题居然这么简单!有小伙伴问还有哪些必考内容进制换算也是必 ...
- 【蓝桥杯】python进制转换16进制转8进制。16进制转10进制。10进制转16进制。
问题描述 给定n个十六进制正整数,输出它们对应的八进制数. 样例输入 2 39 123ABC 样例输出 71 4435274 n = int(input()) #输入一个正整数n,表示n个十六进制正整 ...
- 使用 Shell 运算进行进制转换 16进制转10进制
使用 Shell 运算进行进制转换 工作时候常常遇到一些问题,拿到的数字是16进制的,但是运算的时候是10进制的,shell可以很方便的处理这类的进制转换问题,一种情况是使用 Shell 运算把一个数 ...
- 10进制转换16进制C代码实现
其实这个题目可以用严蔚敏数据结构书上讲的栈实现 #include<stdio.h> #define N 8 #define k 16 void tran(int num) { int ar ...
- 【python】用python进行进制转换(10进制、2进制、16进制)
进制转换 ① 16进制转10进制 ② 16进制转2进制 ③ 10进制转16进制 ④ 10进制转2进制 ⑤ 2进制转16进制 ⑥ 2进制转10进制 博客由来写在前面:由于计组老师要求我们课后查一下进制转 ...
- 利用10位AD转换器 及 LED 数码管,实现由AD转换器采集温度,并用数码管显示。温度超出一定范围,LED 指示灯闪烁报警。(主要分析进制16进制转换10进制,并用数码管显示问题)
** 题目: ** 利用原有的电路 AD 及 LED 数码管显示等例子,进行整合.实现由 AD转换器采集温度(用可调电阻模拟),温度在数码管上显示.当温度超出一定范围,用 LED 指示灯进行闪烁报警. ...
- python16进制转10进制_python 字节串及10进制,16进制相关转换
进行协议解析时,总是会遇到各种各样的数据转换的问题,从二进制到十进制,从字节串到整数等等 整数之间的进制转换: 10进制转16进制: hex(16) ==> 0x10 16进制转10进制: in ...
- 16进制数组转成10进制 qt_QT 16进制 ASII 10进制 转换
//16进制字符串转字节数组 static QByteArray HexStrToByteArray(QString str) { QByteArray senddata; //发送数据 int h ...
- C# 数字转16进制和字符串转换16进制
数字转换16进制.前提是你输入的必须是数字,而不是别的东西. private string StringToHexString(string s)//数字转换16进制{long Num = Conve ...
最新文章
- 我的世界java怎么骑马,我的世界怎么骑马?方法解答
- python浪漫代码-使用Python代码的程序员也浪漫
- P1198 [JSOI2008]最大数
- Android C/C++ 开发
- android mysql开发工具_Android开发工具--adb的使用
- 10个在线Web设计开发工具介绍
- 前端请求接口post_前端如何优雅地模拟接口请求?(给你的代码加点小意外)
- 源数据怎么排查重复MySQL_面试官:在使用mysql数据库时,遇到重复数据怎么处理?...
- django orm 之makemigrations和migrate命令
- 迎接2019多校联合新生训练赛(2018/12/31)
- 【快速高斯模糊的实现】
- 计算机怎么知道用户名和密码,电脑的用户名和密码怎么查看
- 电子内窥镜的研究现状及发展趋势
- C#调用Qt写的dll,并处理异常来自 HRESULT:0x8007000B
- 嘉兴 机器人仓库 菜鸟_菜鸟物流嘉兴未来园区的工业机器人系统运维员的一天...
- 五年磨一剑:滴滴顺风车服务端之稳定性规范
- php new object delete,DeleteObject()函数
- 部署hudson时报错解决方案
- 代理服务器导致连接不上局域网问题
- 读书笔记(七)--IoT Security