package com.whjnkj.common.cmdCodeConvert;
public class CMDCodeConvert {
/**
* (转换)把传入的十进制数值转换为八位十六进制的命令代码(转换)
*
* @param value
* @return
*/
public static String floatToIntBitsToHexCMDCode(float value){
String returnString=null;
if(value==0){
returnString= "00000000";
}
else {
int aa=Float.floatToIntBits(value);
String aaa= Integer.toHexString(aa);
StringBuffer sb= new StringBuffer();
String b1=aaa.substring(0, 2);
String b2=aaa.substring(2, 4);
String b3=aaa.substring(4, 6);
String b4=aaa.substring(6, 8);
sb.append(b4);
sb.append(b3);
sb.append(b2);
sb.append(b1);
String bb=sb.toString();
bb=bb.toUpperCase();
returnString=bb;
}
return returnString;
}
/**
* (解析)把传入的八位十六进制命令数值代码 转化为十进制数值(解析)
* @param value
* @return
*/
public static Float intBitsToDecToFloatCMDCode(String value){
Float returnNum=null;
if(value.length()==8){
String bb = value;
StringBuffer sb2 = new StringBuffer();
String c1 = bb.substring(0, 2);
String c2 = bb.substring(2, 4);
String c3 = bb.substring(4, 6);
String c4 = bb.substring(6, 8);
sb2.append(c4);
sb2.append(c3);
sb2.append(c2);
sb2.append(c1);
String cc = sb2.toString();
int zf=1;
String zf1 = cc.substring(0, 1);
if(zf1.equals("C")){
zf=-1;
StringBuffer sb=new StringBuffer();
sb.append("4");
sb.append(cc.substring(1));
cc=sb.toString();
}
int ddd =Integer.valueOf(cc, 16);
float dd = Float.intBitsToFloat(ddd);
returnNum=dd*zf;
}
return returnNum;
}
/**
* (转换)把传入的十进制数值转换为四位的命令代码(转换)
*
* 传入一个float类型的数字 转化为vvxx的字符 vv为小数位 的 十六进制 xx为整数位 的 十六进制
* 小数位如果只有一位十进制 比如:9 ,则变成90后再转换为16进制
* 如果此数是正数:
* 整数位转换成16进制以后如果只有一位 则前面加0
* 小数位如果转换成16进制以后 如果只有一位 则前面加0
* 传入数值如果是负数:
* 整数位转换成16进制以后如果只有一位 则前面加0
* 小数位在10进制的时候,小数位如果只有一位十进制 比如:9 ,则变成90,而后+128而后再转换成16进制
* @param value
* @return
*/
public static String floatToHexToCMDCode(float valueIns) {
if(valueIns>=-255.99&& valueIns<=255.99){
int negtive=0;
if(valueIns<0){
negtive=1;
}
float value = Math.abs(valueIns);
// 取得小数和整数部分的数字
// 传入数值转化为字符
String preString = String.valueOf(value);
// 整数部分
String preintPart = null;
// 小数部分
String prefloPatr = null;
int index = preString.indexOf('.');
if (index != -1) {
preintPart = preString.substring(0, index);
prefloPatr = preString.substring(index + 1);
} else {
preintPart = preString;
prefloPatr = "0";
}
// 如果小数位只有一位 要在后面加0后再转换为16进制
if (prefloPatr.length() == 1) {
StringBuffer sb2 = new StringBuffer();
sb2.append(prefloPatr);
sb2.append("0");
prefloPatr = sb2.toString();
}
//传入数值如果是负数 小数位加0后的十进制数要+128后再转换为16进制
if(negtive==1){
int floIn = Integer.parseInt(prefloPatr);
int floNegConv = floIn+128;
prefloPatr=String.valueOf(floNegConv);
}
// 转换为十六进制 整数位
String preStrIntPart = Integer
.toHexString(Integer.parseInt(preintPart));
// 转换为十六进制 小数位
String preStrFloatPart = Integer.toHexString(Integer
.parseInt(prefloPatr));
// 检验转化后的数字位数如果只有 一位的 前面加0
if (preStrIntPart.length() == 1) {
StringBuffer sb = new StringBuffer();
sb.append("0");
sb.append(preStrIntPart);
preStrIntPart = sb.toString();
}
if (preStrFloatPart.length() == 1) {
StringBuffer sb1 = new StringBuffer();
sb1.append("0");
sb1.append(preStrFloatPart);
preStrFloatPart = sb1.toString();
}
// 小数位和整数位连接
StringBuffer sb = new StringBuffer();
sb.append(preStrFloatPart);
sb.append(preStrIntPart);
String pressValueHexforCMD = sb.toString();
pressValueHexforCMD=pressValueHexforCMD.toUpperCase();
return pressValueHexforCMD;
}
else{
return null;
}
}
/**
* (解析)把传入的四位十六进制命令数值代码 转化为十进制数值(解析)
*
* @param hexValue
* @return
*/
public static Float convertHexCmdValuetoDecValue(String hexValue){
if (hexValue.length() == 4) {
int neg = 1;
// 十六进制 小数位
String floPartHex = hexValue.substring(0, 2);
// 十六进制整数位
String intPartHex = hexValue.substring(2);
// 十进制小数位
String floPartDecStr = Integer.valueOf(floPartHex, 16).toString();
// 如果小数位的数值大于等于128说明这个数是负数
int floVal = Integer.parseInt(floPartDecStr);
if (floVal >= 128) {
floVal = floVal - 128;
floPartDecStr = String.valueOf(floVal);
neg = -1;
}
// 判断小数位是几位 而后转化
if (floPartDecStr.length() == 1) {
StringBuffer sb1 = new StringBuffer();
sb1.append("0.0");
sb1.append(floPartDecStr);
floPartDecStr = sb1.toString();
} else if (floPartDecStr.length() > 1) {
StringBuffer sb1 = new StringBuffer();
sb1.append("0.");
sb1.append(floPartDecStr);
floPartDecStr = sb1.toString();
}
// 十进制小数
float floPartDec = Float.parseFloat(floPartDecStr);
// 十进制整数
int intPartDec = Integer.valueOf(intPartHex, 16);
// 加合成一个数
float retValue = floPartDec + intPartDec;
retValue = retValue * neg;
return retValue;
} else {
return null;
}
}
/**
* (解析)把传入的两位十六进制命令数值代码 转化为十进制数值(解析)
*
* @param hexValue
* @return
*/
public static Float convertHexCmdValuetoDecValueTwo(String intPartHex){
if (intPartHex.length() == 2) {
int neg = 1;
// 十进制整数
int intPartDec = Integer.valueOf(intPartHex, 16);
// 加合成一个数
float retValue = intPartDec;
retValue = retValue * neg;
return retValue;
} else {
return null;
}
}
}
分享到:
相关推荐
"易语言源码易语言代码转换源码.rar" 这个压缩包文件主要包含的是易语言的源代码,用于代码的转换功能。下面我们将深入探讨易语言以及源码转换的相关知识点。 1. **易语言概述**: - 易语言由王江民先生创建,旨在...
### 实证Stata代码命令汇总新 #### 数据导入与管理 **Stata**作为一种功能强大的数据分析工具,在学术研究、商业分析以及政策评估等多个领域都得到了广泛的应用。掌握其基本操作对于高效利用该软件进行数据分析至...
"VB6.0代码转换到易语言"这个主题涉及到了两个不同的编程环境:Visual Basic 6.0(VB6.0)和易语言。VB6.0是微软推出的一种面向对象的可视化编程工具,广泛应用于Windows平台的软件开发;而易语言则是一款国产的、以...
实际应用中,发送的数据可以是任何格式,只要能够确保接收端能够准确无误地识别即可。 ### 结论 通过以上分析,我们可以看到,在PowerBuilder中实现ping命令不仅需要对网络协议有一定的了解,还需要掌握如何在...
Linux中的`dd`命令是一个非常强大的工具,用于数据复制、转换和备份。它的工作原理是读取输入(源)文件或设备,然后按照指定的块大小写入到输出(目标)位置。这个命令在系统维护、磁盘克隆、创建映像文件等方面...
本文将深入探讨如何在Delphi和SQL之间进行代码转换,并介绍在Delphi 2010中实现的鼠标手势功能。 首先,让我们了解Delphi和SQL的基本概念。Delphi是一个集成开发环境(IDE),由Embarcadero Technologies开发,用于...
总的来说,Java2Pas工具是Java和Delphi开发者之间的一座桥梁,它简化了两种语言间的代码转换工作,促进了跨平台的代码复用和学习交流。然而,使用Java2Pas时需了解其限制,并准备进行必要的手动调整,以确保转换后的...
这部分可能包括加载数据(`use`命令)、查看数据结构(`describe`命令)、清理缺失值(`drop`或`replace`命令)、变量转换(如分类变量编码,`encode`命令)以及数据排序(`sort`命令)等。 其次,估计模型是实证...
4. 开始转换:执行转换命令,AsmToE会将汇编代码转换为目标格式。 5. 检查结果:通过运行生成的可执行文件,验证转换是否成功。 了解汇编语言对于深入理解计算机底层工作原理和优化代码性能至关重要。AsmToE这样的...
ASCII代码转换表是一种用于计算机和信息交换的标准字符编码表。它被广泛应用于现代电子通信中,用于将字符或指令转换成计算机能够理解和处理的数字代码。ASCII是美国国家标准信息交换码(American Standard Code for...
然而,有些开发者可能需要将已经用FreeBasic编写的代码转换为NiceBasic代码,以适应不同的开发环境或特定的需求。本篇文章将围绕如何利用易语言源码实现这一转换过程进行详细讲解。 1. **FreeBasic与NiceBasic的...
本文将深入探讨易语言中的字符命令及其应用,特别是如何将键代码转换为对应的字符。 在易语言中,"字符命令"是一个用于将整数型的键代码转换为对应字符的文本型命令。这个命令的英文名称为`chr`,在Windows和Linux...
2. **解析能力**:能够解析Dalvik字节码(DEX文件),将复杂的指令转换为易于理解的命令,便于分析应用的执行流程。 3. **代码查看**:提供源代码级别的查看功能,有助于定位和修复bug,以及学习他人代码的实现方式...
2. 性能优化:C语言的运行效率通常高于Java,对于对性能有严苛要求的应用,如实时系统或计算密集型任务,JCGO提供了将Java代码转换为原生代码的途径。 3. 兼容性需求:有些平台可能不支持Java,但支持C语言,JCGO...
本篇文档聚焦于将Matlab代码转换为动态链接库(DLL),以便在C++项目中利用Matlab强大的算法设计功能。此过程涉及多个关键步骤和知识点,本文将进行详细说明。 首先,需要了解Matlab和DLL的基本概念。Matlab是一种...
在IT领域,尤其是在数据处理和电子表格应用中,经常需要对数据进行编码或转换以便于管理和操作。WPS表格是一款类似Microsoft Excel的电子表格软件,它提供了丰富的功能,包括公式和函数,帮助用户高效地处理数据。本...
### 使用2to3.py工具将Python2代码转换为Python3代码 #### 一、引言 随着Python 3的普及和发展,Python 2已正式宣布退役。为了保持代码的兼容性和未来的可维护性,开发者们逐渐转向Python 3。然而,Python 2与...
在本压缩包“这是redis实战里面的代码转换成为go语言实现.zip”中,包含了一个名为“myredis-master”的项目,这显然是一份使用Go语言重写Redis实战中的代码。Redis是一种高性能的键值对数据存储系统,常用于缓存、...
《runasdog v0.1源代码解析:将本地应用转变为服务器》 runasdog v0.1是一款独特的工具,其主要功能是将原本只能在本地运行的应用程序转化为可以通过网络访问的服务,使得用户可以在任何地方通过网络连接到该服务...