java编写进制转换器的代码
java 转十六进制方法
java 转十六进制方法摘要:1.引言2.Java中转换十六进制的常用方法3.具体实现方法及示例4.总结正文:【引言】在Java编程中,有时候我们需要将某些数据转换为十六进制字符串,例如在加密和解密过程中。
这里,我们将介绍两种在Java中转换十六进制的常用方法。
【Java中转换十六进制的常用方法】在Java中,有两种常用的转换十六进制的方法:1.使用`Integer.toHexString()`方法:该方法可以直接将整数转换为十六进制字符串。
例如,将整数10转换为十六进制字符串,代码如下:```javaString hexString = Integer.toHexString(10); // 输出"A"```2.使用`String.format()`方法:该方法可以格式化字符串,将其转换为十六进制表示。
例如,将字符串"12345"转换为十六进制字符串,代码如下:```javaString hexString = String.format("%04X", 12345); // 输出"001A"```【具体实现方法及示例】下面我们通过一个简单的示例来说明如何使用这两种方法将整数转换为十六进制字符串:```javapublic class HexConversion {public static void main(String[] args) {int num = 12345;// 使用Integer.toHexString() 方法String hexString1 = Integer.toHexString(num);System.out.println("Integer.toHexString() 方法:" + hexString1);// 使用String.format() 方法String hexString2 = String.format("%04X", num);System.out.println("String.format() 方法:" + hexString2);}}```【总结】在Java中,我们可以使用`Integer.toHexString()`方法和`String.format()`方法将整数转换为十六进制字符串。
java 进制转换的常用方法
java 进制转换的常用方法Java是一种广泛应用于软件开发领域的编程语言,它提供了丰富的库和工具来进行进制转换。
在Java中,我们经常需要将数据在不同的进制之间进行转换,比如将二进制转换为十进制,或者将十进制转换为十六进制。
本文将介绍Java中常用的进制转换方法,帮助读者更好地理解和应用这些方法。
一、二进制转十进制在Java中,我们可以使用Integer类的parseInt()方法将二进制字符串转换为十进制整数。
该方法的原型为:public static int parseInt(String s, int radix)其中,s是表示二进制数的字符串,radix是进制数,对于二进制转换,我们需要将radix设置为2。
下面是一个示例代码:```javaString binaryStr = "1010";int decimalNum = Integer.parseInt(binaryStr, 2);System.out.println("二进制数" + binaryStr + " 转换为十进制数为:" + decimalNum);```二、十进制转二进制同样地,我们可以使用Integer类的toBinaryString()方法将十进制整数转换为二进制字符串。
该方法的原型为:public static String toBinaryString(int i)下面是一个示例代码:```javaint decimalNum = 10;String binaryStr = Integer.toBinaryString(decimalNum); System.out.println("十进制数" + decimalNum + " 转换为二进制数为:" + binaryStr);```三、十进制转十六进制Java中提供了Integer类的toHexString()方法来将十进制整数转换为十六进制字符串。
javaAES实现字符串的加密、解密(配合二进制、十六进制转换的工具使用)
javaAES实现字符串的加密、解密(配合⼆进制、⼗六进制转换的⼯具使⽤)//BinHexSwitchUtil 参考这个链接https:///xiaoxiao075/p/13230454.htmlimport javax.crypto.*;import javax.crypto.spec.SecretKeySpec;import java.security.InvalidKeyException;import java.security.Key;import java.security.NoSuchAlgorithmException;import java.security.SecureRandom;import java.util.Arrays;import java.util.Base64;//import mons.codec.binary.Base64;public class EncryptStrUtil {/*** KeyGenerator的⽅式,通过传⼊种⼦串⽣成key,进⾏加密* @param seed ⽣成key传⼊的种⼦串* @param toEncryptStr 要加密的字节数组* @return返回 Base64 的加密字符串*/public static String encrypt(String seed, byte[] toEncryptStr) {try {return Base64.getEncoder().encodeToString(getCipher(seed, Cipher.ENCRYPT_MODE).doFinal(toEncryptStr)); //此时使⽤的 Base64 编码} catch (Exception e) {e.printStackTrace();}return null;}/*** 根据传⼊的⼆进制 key数组,返回AES的⼗六进制加密串* @param keyBytes* @param toEncryptStr* @return*/public static String encrypt(byte[] keyBytes, byte[] toEncryptStr) {try {return BinHexSwitchUtil.bytesToHexString(getCipher(keyBytes, Cipher.ENCRYPT_MODE).doFinal(toEncryptStr));} catch (Exception e) {e.printStackTrace();}return null;}/*** KeyGenerator的⽅式,通过传⼊种⼦串⽣成key,进⾏解密* @param seed ⽣成key传⼊的种⼦串* @param encryptedStr 要解密的字节数组,Base64加密的* @return返回解密的字节数组*/public static byte[] decrypt(String seed, byte[] encryptedStr) {try {return getCipher(seed, Cipher.DECRYPT_MODE).doFinal(Base64.getDecoder().decode(encryptedStr));} catch (Exception e) {e.printStackTrace();}return null;}/*** 根据传⼊的⼆进制 key数组,将16进制加密串解密* @param keyBytes* @param encryptedStr 要解密的字符串* @return已解密的⼆进制数组*/public static byte[] decrypt(byte[] keyBytes, String encryptedStr) {try {return getCipher(keyBytes, Cipher.DECRYPT_MODE).doFinal(BinHexSwitchUtil.hexStringTobytes(encryptedStr));} catch (Exception e) {e.printStackTrace();}return null;}/*** KeyGenerator 的⽅式⽣成key,获取密码⽣成器* @param seed 传⼊的种⼦字符串* @param encryptMode 传⼊加密模式、解密模式* @return返回密码⽣成器* @throws Exception*/private static Cipher getCipher(String seed, int encryptMode) throws Exception {//⽣成加密随机数SecureRandom random = SecureRandom.getInstance("SHA1PRNG");//并设置seedrandom.setSeed(seed.getBytes());//创建AES⽣产者KeyGenerator generator = KeyGenerator.getInstance("AES");//初始化⽣产者,128位generator.init(128, random);Key key=generator.generateKey();// 返回基本编码格式的密钥(初始key),如果此密钥不⽀持编码,则返回null。
java十进制转换成二进制的方法
java十进制转换成二进制的方法在Java中,你可以使用内置的方法将十进制数转换为二进制。
一种常见的方法是使用Java的`Integer.toBinaryString` 方法,该方法接受一个整数作为参数,返回表示该整数的二进制字符串。
以下是一个简单的示例:```javaint decimalNumber = 42; // 十进制数String binaryString = Integer.toBinaryString(decimalNumber); // 将十进制转换为二进制字符串System.out.println("二进制表示: " + binaryString);```这将输出:```二进制表示: 101010```上述代码将十进制数42 转换为二进制字符串"101010"。
如果你需要更多控制,或者想以其他方式处理二进制表示,你可以使用位操作或字符串格式化等方法来执行转换。
以下是一个使用位操作来手动执行十进制到二进制转换的示例:```javaint decimalNumber = 42; // 十进制数StringBuilder binaryStringBuilder = new StringBuilder();while (decimalNumber > 0) {int remainder = decimalNumber % 2; // 获取余数binaryStringBuilder.insert(0, remainder); // 在二进制字符串的前面插入余数decimalNumber = decimalNumber / 2; // 更新十进制数}String binaryString = binaryStringBuilder.toString();System.out.println("二进制表示: " + binaryString);```这段代码将以类似的方式将十进制数42 转换为二进制字符串"101010"。
51单片机进制转换程序
51单片机进制转换程序
本程序可以在51单片机上实现十进制、二进制、十六进制之间的相互转换。
以下是各个功能的详细说明:
1. 十进制到二进制:将输入的十进制数转换成二进制数,以字符串的形式输出。
2. 十进制到十六进制:将输入的十进制数转换成十六进制数,以字符串的形式输出。
3. 二进制到十进制:将输入的二进制数转换成十进制数,以整数的形式输出。
4. 十六进制到十进制:将输入的十六进制数转换成十进制数,以整数的形式输出。
5. 二进制到十六进制:将输入的二进制数转换成十六进制数,以字符串的形式输出。
6. 十六进制到二进制:将输入的十六进制数转换成二进制数,以字符串的形式输出。
程序流程图:
(1) 十进制到二进制:
输入:十进制数(整数)
输出:二进制数(字符串)
流程:将十进制数除以2,取余数,然后将商继续除以2,直到商为0,将所有余数逆序排列,得到二进制数。
(2) 十进制到十六进制:
输入:十进制数(整数)
输出:十六进制数(字符串)
流程:将十进制数除以16,取余数,然后将商继续除以16,直到商为0,将所有余数逆序排列,得到十六进制数。
(3) 二进制到十进制:
输入:二进制数(字符串)
输出:十进制数(整数)
流程:将二进制数从右向左遍历,每个数字乘以2的幂次方(0次方到n-1次方),其中n为二进制数的长度,然后将所有结果相加得到十进制数。
(4) 十六进制到十进制:
输入:十六进制数(字符串)
输出:十进制数(整数)
流程:将十六进制数从右向左遍历,每个数字乘以16的幂次方(0次方到n-1次方),其中n为十六进制数的长度,然后将所有结果相加得到十进制数。
ruby 中不同进制之间的转换
ruby 中不同进制之间的转换在Ruby中,可以使用不同的方法将不同进制之间进行转换。
以下是一些常见的方法:1. 十进制转换为其他进制:- 十进制转二进制:使用`to_s`方法,并指定参数为2。
```rubydecimal_num = 10binary_num = decimal_num.to_s(2)puts binary_num```输出:```1010```- 十进制转八进制:使用`to_s`方法,并指定参数为8。
```rubydecimal_num = 10octal_num = decimal_num.to_s(8)puts octal_num```输出:```12```- 十进制转十六进制:使用`to_s`方法,并指定参数为16。
```rubydecimal_num = 10hex_num = decimal_num.to_s(16)puts hex_num```输出:```a```2. 其他进制转换为十进制:- 二进制转十进制:使用`to_i`方法,并指定参数为2。
```rubybinary_num = "1010"decimal_num = binary_num.to_i(2)puts decimal_num```输出:```10```- 八进制转十进制:使用`to_i`方法,并指定参数为8。
```rubyoctal_num = "12"decimal_num = octal_num.to_i(8)puts decimal_num```输出:```10```- 十六进制转十进制:使用`to_i`方法,并指定参数为16。
```rubyhex_num = "a"decimal_num = hex_num.to_i(16)puts decimal_num```输出:```10```注意:以上方法都是将字符串转换为数字,如果直接对数字运算,Ruby会自动将其识别为十进制。
JAVA二进制字节数组字符十六进制BCD编码转换
JAVA二进制字节数组字符十六进制BCD编码转换预览说明:预览图片所展示的格式为文档的源格式展示,下载源文件没有水印,内容可编辑和复制JAVA二进制字节数组字符十六进制BCD编码转换;import java.io.*;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;public class DataConverter {/* 把16进制字符串转换成字节数组* @param hex* @return*/public static byte[] hexStringT oByte(String hex) {int len = (hex.length() / 2);byte[] result = new byte[len];char[] achar = hex.toCharArray();for (int i = 0; i < len; i++) {int pos = i * 2;result[i] = (byte) (toByte(achar[pos]) << 4 | toByte(achar[pos + 1]));}return result;}private static byte toByte(char c) {byte b = (byte) "0123456789ABCDEF".indexOf(c);return b;}/** *//*** 把字节数组转换成16进制字符串* @param bArray* @return*/public static final String bytesToHexString(byte[] bArray) {StringBuffer sb = new StringBuffer(bArray.length);String sTemp;for (int i = 0; i < bArray.length; i++) {sTemp = Integer.toHexString(0xFF & bArray[i]);if (sTemp.length() < 2)sb.append(0);sb.append(sTemp.toUpperCase());}return sb.toString();}/** *//*** 把字节数组转换为对象* @param bytes* @return* @throws IOException* @throws ClassNotFoundException*/public static final Object bytesToObject(byte[] bytes) throws IOException, ClassNotFoundException {ByteArrayInputStream in = new ByteArrayInputStream(bytes);ObjectInputStream oi = new ObjectInputStream(in);Object o = oi.readObject();oi.close();return o;}/** *//*** 把可序列化对象转换成字节数组* @param s* @return* @throws IOException*/public static final byte[] objectToBytes(Serializable s) throws IOException {ByteArrayOutputStream out = new ByteArrayOutputStream();ObjectOutputStream ot = new ObjectOutputStream(out);ot.writeObject(s);ot.flush();ot.close();return out.toByteArray();}public static final String objectToHexString(Serializable s) throws IOException{ return bytesT oHexString(objectToBytes(s));}public static final Object hexStringToObject(String hex) throws IOException, ClassNotFoundException{return bytesToObject(hexStringToByte(hex));}/** *//*** @函数功能: BCD码转为10进制串(阿拉伯数据)* @输入参数: BCD码* @输出结果: 10进制串*/public static String bcd2Str(byte[] bytes){StringBuffer temp=new StringBuffer(bytes.length*2);for(int i=0;i<bytes.length;i++){< bdsfid="150" p=""></bytes.length;i++){<>temp.append((byte)((bytes[i]& 0xf0)>>>4));temp.append((byte)(bytes[i]& 0x0f));}returntemp.toString().substring(0,1).equalsIgnoreCase("0")?temp.t oString().substring(1):temp.toString() ;}/** *//*** @函数功能: 10进制串转为BCD码* @输入参数: 10进制串* @输出结果: BCD码*/public static byte[] str2Bcd(String asc) {int len = asc.length();int mod = len % 2;if (mod != 0) {asc = "0" + asc;len = asc.length();}byte abt[] = new byte[len];if (len >= 2) {len = len / 2;}byte bbt[] = new byte[len];abt = asc.getBytes();int j, k;for (int p = 0; p < asc.length()/2; p++) {if ( (abt[2 * p] >= '0') && (abt[2 * p] <= '9')) {j = abt[2 * p] - '0';} else if ( (abt[2 * p] >= 'a') && (abt[2 * p] <= 'z')) {j = abt[2 * p] - 'a' + 0x0a;} else {j = abt[2 * p] - 'A' + 0x0a;}if ( (abt[2 * p + 1] >= '0') && (abt[2 * p + 1] <= '9')) {k = abt[2 * p + 1] - '0';} else if ( (abt[2 * p + 1] >= 'a') && (abt[2 * p + 1] <= 'z')) { k = abt[2 * p + 1] - 'a' + 0x0a;}else {k = abt[2 * p + 1] - 'A' + 0x0a;}int a = (j << 4) + k;byte b = (byte) a;bbt[p] = b;}return bbt;}/** *//*** @函数功能: BCD码转ASC码* @输入参数: BCD串* @输出结果: ASC码*//*public static String BCD2ASC(byte[] bytes) { StringBuffer temp = new StringBuffer(bytes.length * 2); for (int i = 0; i < bytes.length; i++) {int h = ((bytes[i] & 0xf0) >>> 4);int l = (bytes[i] & 0x0f);temp.append(BT oA[h]).append( BToA[l]);}return temp.toString() ;}*//** *//*** MD5加密字符串,返回加密后的16进制字符串* @param origin* @return*/public static String MD5EncodeT oHex(String origin) {return bytesToHexString(MD5Encode(origin));}/** *//*** MD5加密字符串,返回加密后的字节数组* @param origin* @return*/public static byte[] MD5Encode(String origin){ return MD5Encode(origin.getBytes());}/** *//*** MD5加密字节数组,返回加密后的字节数组* @param bytes * @return*/public static byte[] MD5Encode(byte[] bytes){ MessageDigest md=null;try {md = MessageDigest.getInstance("MD5");return md.digest(bytes);} catch (NoSuchAlgorithmException e) { e.printStackTrace();return new byte[0];}}}。
java中十进制转二进制代码
java中十进制转二进制代码
有多种方式实现十进制转二进制,以下是其中一种可能的实现:
```。
public static String decimalToBinary(int decimal) 。
if (decimal == 0) 。
return "0";。
}。
StringBuilder binary = new StringBuilder();。
while (decimal > 0) 。
int bit = decimal % 2;。
binary.insert(0, bit);。
decimal = decimal / 2;。
}。
return binary.toString();。
}。
```。
解释一下这段代码:
- `decimalToBinary` 方法接收一个整数参数 `decimal`,表示要转换的十进制数。
- 如果参数 `decimal` 是 0,则直接返回字符串 "0",因为 0 的二进制表示就是 0。
- 否则,定义一个 `StringBuilder` 对象 `binary` 用来保存二进制表示。
- 从低位向高位依次转换每一位。
对于每一位,计算 `decimal` 除以 2 的余数,表示该位的二进制数值,将其加入 `binary` 的左侧。
然后将 `decimal` 更新为 `decimal` 除以 2 的商,以便下一次循环计算高一位的二进制数值。
-最后返回字符串类型的二进制数值。
java浮点数转二进制方法
java浮点数转二进制方法Java是一种强大的编程语言,广泛应用于软件开发领域。
在Java 中,浮点数是一种常见的数据类型,用于表示小数或带有小数的数字。
在某些情况下,我们可能需要将浮点数转换为二进制形式进行处理或存储。
本文将介绍如何使用Java将浮点数转换为二进制形式。
在Java中,浮点数类型有两种:float和double。
其中,float类型占用4个字节(32位),double类型占用8个字节(64位)。
在转换浮点数为二进制形式时,我们需要了解IEEE 754标准,该标准定义了浮点数的二进制表示方法。
我们来看一下float类型的转换方法。
Java中的Float类提供了一个静态方法floatToIntBits(),可以将float类型的浮点数转换为32位的二进制形式。
例如,我们有一个float类型的变量f,可以使用以下代码将其转换为二进制形式:```float f = 3.14f;int binary = Float.floatToIntBits(f);String binaryString = Integer.toBinaryString(binary); System.out.println(binaryString);```上述代码中,我们首先定义了一个float类型的变量f,并赋值为3.14。
然后,使用Float类的floatToIntBits()方法将f转换为32位的二进制形式,并将结果存储在一个int类型的变量binary中。
最后,使用Integer类的toBinaryString()方法将binary转换为二进制字符串,并输出结果。
接下来,我们来看一下double类型的转换方法。
与float类型类似,Java中的Double类也提供了一个静态方法doubleT oLongBits(),可以将double类型的浮点数转换为64位的二进制形式。
以下是一个示例代码:```double d = 3.14;long binary = Double.doubleToLongBits(d);String binaryString = Long.toBinaryString(binary);System.out.println(binaryString);```上述代码中,我们定义了一个double类型的变量d,并赋值为3.14。
java十六进制转二进制方法
java十六进制转二进制方法【原创版3篇】篇1 目录1.Java 中十六进制转二进制的方法2.编码规则3.示例代码篇1正文在 Java 编程语言中,常常需要将十六进制数转换为二进制数。
为了实现这一目的,我们可以使用 Java 内置的编码规则。
具体步骤如下:1.Java 中十六进制转二进制的方法在 Java 中,可以使用`Integer.toBinaryString()`方法将一个整数转换为二进制字符串。
这个方法接收一个整数作为参数,返回一个表示该整数的二进制字符串。
2.编码规则在将十六进制数转换为二进制数时,需要遵循以下编码规则:- 十六进制数中的每一位数字都对应二进制数中的四位。
- 如果某一位十六进制数字为 0,那么在对应的二进制数位上就是 0;如果某一位十六进制数字为 1-9,那么在对应的二进制数位上就是 1。
3.示例代码下面是一个使用 Java 编写的十六进制转二进制的示例代码:```javapublic class HexToBinary {public static void main(String[] args) {int hexNumber = 1A3F;String binaryString =Integer.toBinaryString(hexNumber);System.out.println("Hexadecimal number: " + hexNumber);System.out.println("Binary representation: " + binaryString);}}```在这个示例中,我们定义了一个十六进制数`hexNumber`,并将其转换为二进制字符串`binaryString`。
然后,我们分别打印出原始的十六进制数和转换后的二进制数。
运行这个示例,你将看到如下输出:```Hexadecimal number: 1A3FBinary representation: 101010101111```通过这个示例,我们可以清楚地看到如何将一个十六进制数转换为二进制数。
java 10进制转16进制,不足补0方法
java 10进制转16进制,不足补0方法【原创版2篇】目录(篇1)1.Java 中进制转换的方法2.十进制转十六进制的方法3.不足补 0 的方法4.示例代码正文(篇1)在 Java 编程语言中,进制转换是一种常见的操作。
当我们需要将一个十进制数转换为十六进制数时,可以利用 Java 提供的进制转换方法。
同时,为了保证转换后的结果正确无误,还需要采用不足补 0 的方法。
接下来,我们将详细介绍这两种方法。
首先,我们来了解 Java 中进制转换的方法。
在 Java 中,可以使用`Integer.toHexString()`方法将一个十进制整数转换为十六进制字符串。
这个方法的参数是一个整数,返回值是一个表示该整数十六进制表示的字符串。
需要注意的是,如果输入的整数为负数,该方法会抛出`NumberFormatException`异常。
其次,我们来探讨十进制转十六进制的方法。
要将一个十进制整数转换为十六进制数,可以使用`Integer.toHexString()`方法。
但需要注意的是,该方法返回的十六进制字符串可能会以"0x"或"0X"开头。
为了去掉这个前缀,可以使用`String.replace()`方法进行处理。
接下来,我们来介绍不足补 0 的方法。
在不足补 0 的方法中,如果十六进制数的位数少于预期,需要在其左侧用 0 进行填充。
这样可以确保转换后的结果是正确的。
在 Java 中,可以使用字符串拼接的方法实现不足补 0。
最后,我们来看一个示例代码,演示如何将一个十进制整数转换为十六进制数,并实现不足补 0 的方法。
示例代码如下:```javapublic class DecimalToHexadecimal {public static void main(String[] args) {int decimalNumber = 1234;String hexadecimalNumber =Integer.toHexString(decimalNumber).replace("0x", "");System.out.println("十进制数:" + decimalNumber);System.out.println("十六进制数:" + hexadecimalNumber);}}```在这个示例中,我们首先使用`Integer.toHexString()`方法将十进制整数`decimalNumber`转换为十六进制字符串。
java编写代码实现,将十进制小数转换为二进制小数(使用乘2取整法)
java编写代码实现,将十进制小数转换为二进制小数(使
用乘2取整法)
以下是一个Java程序,它使用乘2取整法将十进制小数转换为二进制小数:
```java
import ;
public class DecimalToBinary {
public static void main(String[] args) {
Scanner scanner = new Scanner();
("请输入一个十进制小数:");
double decimal = ();
();
double binary = 0;
int decimalPoint = 0;
while (decimal != 0) {
double temp = decimal 2;
int integerPart = (int) temp;
double decimalPart = temp - integerPart;
if (integerPart == 1) {
binary += 1;
} else {
binary += decimalPart;
}
decimal = decimalPart;
decimalPoint++;
}
("%.15f的二进制形式为%.15f", decimal, binary);
}
}
```
这个程序首先从用户那里获取一个十进制小数,然后使用一个循环来重复乘2取整的过程,直到十进制小数变为0。
在每次循环中,它都会计算整数部分和小数部分,并根据需要将它们添加到二进制数中。
最后,它将打印出转换后的二进制数。
java byte[]转16进制效率高内存底的方法
java byte[]转16进制效率高内存底的方法摘要::1.引入话题背景;2.分析现有方法;3.提出改进方法;4.代码实现及测试;5.总结高效原因。
正文:正文:在Java编程中,将byte[]转换为16进制字符串是一项常见的操作。
然而,现有的方法往往在效率和内存占用方面存在不足。
本文将介绍一种高效且内存占用较低的方法,并对这种方法进行代码实现和测试。
1.引入话题背景在现有的Java技术中,将byte[]转换为16进制字符串的方法有很多。
然而,这些方法在处理大量数据时,可能会因为效率低下或内存占用过高而导致程序卡顿或崩溃。
因此,寻求一种高效且内存占用较低的方法显得尤为重要。
2.分析现有方法目前,常见的将byte[]转换为16进制字符串的方法有以下两种:(1)使用Java内置的`hexdump`方法:```javapublic static String byteArrayToHex(byte[] bytes) {StringBuilder sb = new StringBuilder();for (byte b : bytes) {sb.append(String.format("%02x", b));}return sb.toString();}```(2)使用循环遍历字节数组并转换:```javapublic static String byteArrayToHex(byte[] bytes) {StringBuilder sb = new StringBuilder();for (int i = 0; i < bytes.length; i++) {sb.append(String.format("%02x", bytes[i]));}return sb.toString();}```3.提出改进方法针对现有方法的不足,本文提出一种基于字符串拼接而非循环遍历的字节数组转换方法。
Java生成二进制文件与Postman以二进制流的形式发送请求
Java⽣成⼆进制⽂件与Postman以⼆进制流的形式发送请求业务描述:模拟终端(智能家居)发送HTTP POST请求,请求参数为⼆进制流;⽽且,⼆进制流是加密后的数据,因此调试分两步:1、Java代码⽣成加密后数据,并保存为⼆进制流⽂件(电脑上的图⽚就是⼆进制流⽂件,只不过我们打开的时候,借助于电脑软件渲染为图⽚)上代码⽚段:1byte[] oneshotBytes = reqParms.getBytes();2 ("length----->"+oneshotBytes.length);3//FileWriter fw = new FileWriter(new File("/home/unisound/private_cloud_platform/rtc_demo/req_binary"));4//fw.write(new String(oneshotBytes,"utf-8"));5//fw.flush();6//fw.close();7 OutputStream os = new FileOutputStream(new File("/home/unisound/private_cloud_platform/rtc_demo/req_binary"));8 os.write(oneshotBytes);9 os.flush();10 os.close();代码很简单,就是把byte[]保存为⽂件;坑点:千万不要把byte[] 转换为 String 然后把 String写⼊⽂件;不然你会发现,原本214字节的⽂件变为252字节或者更⼤原因很简单,⼆进制流转换为字符串,这是编码的过程,编码就需要选择字符集(这⾥是UTF-8),字符集中字符长度和字节长度是不对等的,⽐如UTF-8中,⼀个汉字是3个字节,字母数组不编码仍然是⼀个字节~!简单说,就是⼆进制数组byte[]与转换成的String后的XXX.getBytes()的长度是不⼀样的2、PostMan发送请求这个就简单了,body中选择binary(⼆进制流),选中第⼀步⽣成的⼆进制⽂件...注意:header中,不要设置ContentType(⼀定注意,不要设置ContentType,如果⾮要设置,请设置为ContentType=text/plain,这也是默认值)。
java中进行二进制,八进制,十六进制,十进制间进行相互转换
2.十六进制的转换
String st = "this is roger";
// hex
for(int i = 0; i<st.length(); i++){
System.out.println( "hexString = " + hexString );
String str = Integer.toString(Integer.parseInt(hexString, 16));
System.out.println( "str = " + str );
}
/*
* 16进制数字字符集
*/
private static String hexString="0123456789ABCDEF";
/*
* 将字符串编码成16进制数字,适用于所有字符(包括中文)
*/
public static String encode(String str)
{
ng.Integer类
parseInt(String s, int radix)
使用第二个参数指定的基数,将字符串参数解析为有符号的整数。
examples from jdk:
parseInt("0", 10) returns 0
parseInt("473", 10) returns 473
parseInt("Kona", 27) returns 411787
将整数转成二进制(Java)
将整数转成⼆进制(Java) 1import java.util.Arrays;2//把⼗进制转换为⼆进制的位3public class ToBinBit4 {5public static void main(String[] args)6 {7//1.假设现在有⼀个int为20,需要转换为⼆进制输出8int number = 20;9//2.需要⼀个长度为32的int数组来存储结果⼆进制10int[] bit = new int[32];11//3.循环,把原始数除以2取得余数,这个余数就是⼆进制数,原始的数等于商。
12//商如果不能再除以⼆,结束循环。
1314for(int i = 0; number > 1; i++)15 {16//取得除以2的余数17int b = number % 2;18//数字赋值为除以2的商19 number = number / 2;2021 bit[i] = b;2223if( number < 2 )24 {25//已经不能再把数除以2,就把上直接放到数组的下⼀位26 bit[i + 1] = number;27 }28 }2930//4.翻转数组31for(int i = 0; i < bit.length / 2;i++)32 {33int temp = bit[i];34//第⼀个数的值设置为最后⼀个数的值35//第⼆次的时候,i是1,把第⼆个数的值,赋值为倒数第⼆个36 bit[i] = bit[ bit.length - 1 - i ];37 bit[ bit.length - 1 - i ] = temp;38 }3940 System.out.println( Arrays.toString(bit) );4142 }43 }。
javacv 的frame转二进制
一、介绍Javacv和Frame的概念1. Javacv是一个在Java评台上使用OpenCV的包装库,可以让开发者在Java中方便地使用OpenCV的功能。
2. Frame(帧)是图像或视瓶中的一帧数据,在多媒体处理中起到重要作用。
二、了解Javacv中Frame转二进制的需求1. 在一些图像处理或视瓶处理的场景中,需要将Frame转换为二进制数据进行进一步处理。
2. 比如在图像识别、视瓶流处理等应用中,需要对原始的图像或视瓶数据进行二进制化处理。
三、Javacv中Frame转二进制的方法1. 使用Javacv读取一帧图像或视瓶数据,并将其转换为Frame对象。
2. 利用Javacv中提供的方法,将Frame对象转换为二进制数据流。
3. 可以使用Javacv中的API或自定义方法,将Frame中的像素数据转换为二进制格式。
四、示例代码1. 使用Javacv读取一张图像并将其转换为Frame对象的示例代码: Frame frame =opencv_imgcodecs.cvLoadImage("path_to_image.jpg");2. 使用Javacv将Frame对象转换为二进制数据流的示例代码:BytePointer bytePointer =opencv_core.cvEncodeImage(".jpg", frame);ByteBuffer byteBuffer = bytePointer.asByteBuffer();byte[] byteArray = new byte[byteBuffer.rem本人ning()];byteBuffer.get(byteArray);3. 自定义方法将Frame中的像素数据转换为二进制格式的示例代码: Mat mat = new Mat(frame);byte[] byteArray = new byte[mat.cols() * mat.rows()];mat.data().get(byteArray);五、总结1. Javacv提供了方便的API和方法,可以实现Frame转换为二进制数据的功能。
Java十六进制与IEEE754浮点数互相转换,支持单双精度
Java⼗六进制与IEEE754浮点数互相转换,⽀持单双精度Java⼗六进制与IEEE754浮点数互相转换,⽀持单双精度本⽂连接:IEEE754Utils.java package com.moefon.power.spriimport java.math.BigDecimal;import java.math.BigInteger;/**** IEE754 浮点数转换⼯具* 单精度校验:47218100 = 41345.0、 47849A0D = 67892.1016* 双精度校验:4721810047849A0D = 45442749783852262460186723560194048** @author: 若⾮* @date: 2021/9/10 8:58*/@Remind("校验:47218100 = 41345.0、 47849A0D = 67892.1016")public class IEEE754Utils {/*** 字节数组转IEEE 754** @param bytes 长度4或者8* @author: 若⾮* @date: 2021/9/10 16:57*/public static BigDecimal bytesToSingle(byte[] bytes) {if (bytes.length > 8) {throw new ArrayIndexOutOfBoundsException("转化失败,字节超出整型⼤⼩!");}String hex = new BigInteger(bytes).toString(16);return hexToSingle(hex, bytes.length * 8);}/*** 字节数组转IEEE 754** @param hex* @param bitLen 32或者64* @author: 若⾮* @date: 2021/9/10 16:57*/private static BigDecimal hexToSingle(String hex, int bitLen) {if (StringUtils.isEmpty(hex)) {return BigDecimal.valueOf(0);}if (bitLen == 32) {int i = Integer.parseInt(hex, 16);float v = Float.intBitsToFloat(i);return new BigDecimal(v);}if (bitLen == 64) {long l = Long.parseLong(hex, 16);double d = Double.longBitsToDouble(l);return new BigDecimal(d);}return BigDecimal.valueOf(0);}/*** IEEE 754字符串转⼗六进制字符串** @param f* @author: 若⾮* @date: 2021/9/10 16:57*/public static String singleToHex(float f) {int i = Float.floatToIntBits(f);String hex = Integer.toHexString(i);return hex;}/*** IEEE 754字符串转⼗六进制字符串** @param d* @author: 若⾮* @date: 2021/9/10 16:57*/public static String singleToHex(double d) {long l = Double.doubleToRawLongBits(d);String hex = Long.toHexString(l);return hex;}//下⾯测⽅法是⽅便c++等没有类似功能的时候做参考* ⼗六进制字符串转IEEE 754** @author: 若⾮* @date: 2021/9/10 16:57*//*public static BigDecimal hexToSingle(String hex, int bitLen) {if (StringUtils.isEmpty(hex) || bitLen != 32 && bitLen != 64) {return BigDecimal.valueOf(0);}String binaryString = StringUtils.fillString(new BigInteger(hex, 16).toString(2), "0", bitLen, true);//String binaryString = String.format("%32s", new BigInteger(hex, 16).toString(2)).replace(' ', '0');int exponentBitLength = hex.length() == 8 ? 8 : 11;int mantissaBitLength = (hex.length() * 4) - exponentBitLength - 1;char s = binaryString.charAt(0);//符号位String e = binaryString.substring(1, exponentBitLength + 1);String m = binaryString.substring(exponentBitLength + 1);Double bias = Math.pow(2, exponentBitLength - 1) - 1;int exponent = Integer.valueOf(e, 2) - bias.intValue();long mantissa = Long.valueOf(m, 2);//BigDecimal bigDecimal = (new BigDecimal(1).add(new BigDecimal(mantissa).multiply(new BigDecimal(Math.pow(2, -mantissaBits))))).multiply(new BigDecimal(Math.pow(2, exponent))); Double res = (1 + (mantissa * Math.pow(2, -mantissaBitLength))) * Math.pow(2, exponent);BigDecimal bigDecimal = new BigDecimal(res);if (s == '1') {return new BigDecimal(0).subtract(bigDecimal);}return bigDecimal;}*//*** IEEE 754转⼗六进制字符串** @author: 若⾮* @date: 2021/9/10 16:57*//*public static String singleToHex(float fv) {String negative = "0";if (fv < 0) {negative = "1";fv = fv * -1;}int thirty;int integer = Float.valueOf(fv).intValue();float decimal = fv - integer;String rear; //0-22位存放的值String medim = "";//23位到29位String integerBinaryString = Integer.toBinaryString(integer);String decimalBinaryString = ConvertUtils.unsignedDecimalToBinary(decimal);if (integerBinaryString.length() > 1) {//左移 30为存1thirty = 1;int exponent = integerBinaryString.length() - 2;rear = integerBinaryString.substring(1) + decimalBinaryString;if (rear.length() > 23) {rear = rear.substring(0, 23);} else {for (int i = rear.length(); i <= 22; i++) {rear += "0";}}medim = Integer.toBinaryString(exponent);medim = StringUtils.fillString(medim, "0", 7, true);} else if ("1".equals(integerBinaryString)) {//不需要移动位数 30位0 剩下的补1 指数部分 23-29位//127-指数 23-29位正好七位最⼤值127thirty = 0;rear = integerBinaryString.substring(1) + decimalBinaryString;if (rear.length() > 23) {rear = rear.substring(0, 23);} else {rear = StringUtils.fillString(medim, "0", 22, true);}medim = "1111111";} else {//0 0 1111101 100 1100 1100 1100 1100 1100//右移 30位存0thirty = 0;int index = decimalBinaryString.indexOf("1");//找到第⼀个为1的位置索引右移动的位数int exponent = 127 - (index + 1);rear = decimalBinaryString.substring(index + 1);if (rear.length() > 23) {rear = rear.substring(0, 23);} else {rear = StringUtils.fillString(medim, "0", 22, true);}medim = Integer.toBinaryString(exponent);medim = StringUtils.fillString(medim, "0", 7, true);}String res = "" + negative + thirty + medim + rear;StringBuilder sb = new StringBuilder();if (res.length() == 32) {for (int i = 0; i < 8; i++) {String binary = res.substring(4 * i, 4 * i + 4);sb.append(Constants.BIN_HEX_TABLE.get(binary));}return sb.toString();}*/}StringUtils.javapublic static String fillString(String src, String c, int len, boolean left) { if (StringUtils.isEmpty(src) || len <= src.length()) {return src;}int l = src.length();for (int i = 0; i < len - l; i++) {if (left) {src = c + src;} else {src += c;}}return src;}public static boolean isEmpty(Object content) {return content == null || "".equals(content);}。
常用的js进制转换
在JavaScript中,可以使用以下几种方法进行进制转换:1. toString() 方法:将一个数字转换为指定的进制字符串。
```javascriptvar num = 10;var binary = num.toString(2); // 转换为二进制var octal = num.toString(8); // 转换为八进制var hex = num.toString(16); // 转换为十六进制```2. Number对象的基数参数:将一个字符串转换为指定的进制数字。
```javascriptvar binaryStr = "1010";var num = Number(binaryStr, 2); // 转换二进制为十进制var octalStr = "12";var octalNum = Number(octalStr, 8); // 转换八进制为十进制var hexStr = "A";var hexNum = Number(hexStr, 16); // 转换十六进制为十进制```3. parseInt() 方法:将一个字符串解析为指定进制的整数。
可以指定基数,也可以不指定基数,默认是10。
```javascriptvar binaryNum = parseInt(binaryStr, 2); // 解析二进制为十进制var octalNum = parseInt(octalStr); // 解析八进制为十进制,不指定基数则默认为十进制var hexNum = parseInt(hexStr, 16); // 解析十六进制为十进制```需要注意的是,在进行进制转换时,输入的字符串或数字必须符合对应进制的规范,否则会抛出错误或返回无效值。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
package com.test;import java.awt.*;import java.awt.event.*;import javax.swing.*;import ng.*;public class Demo extends JFrame implements ActionListener{/*** @param args*/JPanel jp1,jp2;JLabel jl1,jl2;JTextField jtf1,jtf2;JButton jbs[]=new JButton[12];public static void main(String[] args) {// TODO Auto-generated method stubDemo demo=new Demo();}public Demo(){jp1=new JPanel();jp2=new JPanel();jl1=new JLabel("请在此输入数据");jl2=new JLabel("转换结果为");jtf1=new JTextField(10);jtf2=new JTextField(10);jp1.add(jl1);jp1.add(jtf1);jp1.add(jl2);jp1.add(jtf2);for(int i=0;i<12;i++){jbs[i]=new JButton(String.valueOf(i));}jbs[0]=new JButton("二进制转八进制");jbs[1]=new JButton("二进制转十进制");jbs[2]=new JButton("二进制转十六进制");jbs[3]=new JButton("八进制转二进制");jbs[4]=new JButton("八进制转十进制");jbs[5]=new JButton("八进制转十六进制");jbs[6]=new JButton("十进制转二进制");jbs[7]=new JButton("十进制转八进制");jbs[8]=new JButton("十进制转十六进制");jbs[9]=new JButton("十六进制转二进制");jbs[10]=new JButton("十六进制转八进制");jbs[11]=new JButton("十六进制转十进制");jp2.add(jbs[0]);jp2.add(jbs[1]);jp2.add(jbs[2]);jp2.add(jbs[3]);jp2.add(jbs[4]);jp2.add(jbs[5]);jp2.add(jbs[6]);jp2.add(jbs[7]);jp2.add(jbs[8]);jp2.add(jbs[9]);jp2.add(jbs[10]);jp2.add(jbs[11]);jbs[0].addActionListener(this);jbs[1].addActionListener(this);jbs[2].addActionListener(this);jbs[3].addActionListener(this);jbs[4].addActionListener(this);jbs[5].addActionListener(this);jbs[6].addActionListener(this);jbs[7].addActionListener(this);jbs[8].addActionListener(this);jbs[9].addActionListener(this);jbs[10].addActionListener(this);jbs[11].addActionListener(this);jbs[0].setActionCommand("二进制转八进制"); jbs[1].setActionCommand("二进制转十进制"); jbs[2].setActionCommand("二进制转十六进制"); jbs[3].setActionCommand("八进制转二进制"); jbs[4].setActionCommand("八进制转十进制"); jbs[5].setActionCommand("八进制转十六进制"); jbs[6].setActionCommand("十进制转二进制"); jbs[7].setActionCommand("十进制转八进制"); jbs[8].setActionCommand("十进制转十六进制"); jbs[9].setActionCommand("十六进制转二进制"); jbs[10].setActionCommand("十六进制转八进制"); jbs[11].setActionCommand("十六进制转十进制"); jp2.setBackground(getBackground().CY AN);jp2.setLayout(new GridLayout(4,3,2,2));this.add(jp1, BorderLayout.NORTH);this.add(jp2);this.setTitle("进制转换器");this.setSize(500,400);this.setLocation(400,400);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);}@Overridepublic void actionPerformed(ActionEvent arg0) {// TODO Auto-generated method stubif(arg0.getActionCommand().equals("二进制转八进制")){String temp=Integer.valueOf(jtf1.getText(),2).toString();String temp1=Integer.toOctalString(Integer.parseInt(temp));jtf2.setText(temp1);}else if(arg0.getActionCommand().equals("二进制转十进制")){String temp=Integer.valueOf(jtf1.getText(), 2).toString();jtf2.setText(temp);}else if(arg0.getActionCommand().equals("二进制转十六进制")) {String temp=Integer.valueOf(jtf1.getText(),2).toString();String temp1=Integer.toHexString(Integer.parseInt(temp));jtf2.setText(temp1);}else if(arg0.getActionCommand().equals("八进制转二进制")){String temp=Integer.valueOf(jtf1.getText(),8).toString();String temp1=Integer.toBinaryString(Integer.parseInt(temp));jtf2.setText(temp1);}else if(arg0.getActionCommand().equals("八进制转十进制")){String temp=Integer.valueOf(jtf1.getText(),8).toString();jtf2.setText(temp);}else if(arg0.getActionCommand().equals("八进制转十六进制")) {String temp=Integer.valueOf(jtf1.getText(),8).toString();String temp1=Integer.toHexString(Integer.parseInt(temp));jtf2.setText(temp1);}else if(arg0.getActionCommand().equals("十进制转十六进制")) {float a;a= Float.valueOf(jtf1.getText());String temp=Integer.toHexString((int)a);jtf2.setText(temp);}else if(arg0.getActionCommand().equals("十进制转二进制")) {float a;a=Float.valueOf(jtf1.getText());String temp=Integer.toBinaryString((int)a);jtf2.setText(temp);}else if(arg0.getActionCommand().equals("十进制转八进制")) {float a;a=Float.valueOf(jtf1.getText());String temp=Integer.toOctalString((int)a);jtf2.setText(temp);}else if(arg0.getActionCommand().equals("十六进制转二进制")) {String temp=Integer.valueOf(jtf1.getText(),16).toString();String temp1=Integer.toBinaryString(Integer.parseInt(temp));jtf2.setText(temp1);}else if(arg0.getActionCommand().equals("十六进制转八进制")) {String temp=Integer.valueOf(jtf1.getText(),16).toString();String temp1=Integer.toOctalString(Integer.parseInt(temp));jtf2.setText(temp1);}else if(arg0.getActionCommand().equals("十六进制转十进制")) {String temp=Integer.valueOf(jtf1.getText(),16).toString();jtf2.setText(temp);}}}。