前些天想要抓包分析,抓下来的包都是16进制文本,想要复制过来转化成真正的二进制分析。于是写了下面的程序:
package com.yajun;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
/**
* 将16进制字符串转换为二进制数据存入文本
*
* @author yajun.wuyj
*/
public class IntegerDeocde {
public static void main(String[] args) throws IOException {
FileOutputStream fo = new FileOutputStream(new File("IntegerDecode"));
String s = "68 65 6c 6c 6f 20 77 6f 72 6c 64 2c ca c0 bd e7 c6 bd ba e2 ";
for (int i = 0; i < s.length(); i++) {
i = findNextNotBlank(s, i);
if (i == -1) {
break;
}
byte hiByte = Byte.decode("0x" + s.charAt(i)).byteValue();
i = findNextNotBlank(s, ++i);
if (i == -1) {
break;
}
byte lowByte = Byte.decode("0x" + s.charAt(i)).byteValue();
byte result = (byte) ((hiByte << 4) | lowByte);
fo.write(result);
}
fo.close();
}
// 查找下一个不为空白char
private static int findNextNotBlank(String s, int i) {
while (i < s.length() && s.charAt(i) == ' ') {
++i;
}
if (i >= s.length()) {
return -1;
}
return i;
}
}
分享到:
相关推荐
相反,16进制文本转字节集则需要解析16进制文本,将每一对16进制数字转换回字节,并存入字节集中。这需要处理字符串的分隔,将每一对数字解析出来,再进行转换。在这个过程中,需要注意16进制数字的大小写问题,因为...
例如,在Python中,可以使用PIL(Pillow)库来读取BMP文件,然后通过循环遍历像素,将每个像素的RGB值转换为16进制字符串,并存入列表。 这个转换过程对于将图像数据嵌入到代码中(如微控制器或嵌入式系统)、在...
例如,对于输入的字符串"1df",`hex2int`函数会将其转换为10进制整数479,其中'1'对应16进制的1,'d'对应13,'f'对应15。 另一方面,`int2hex`函数则用于将10进制整数转换为16进制字符串。它首先定义一个包含所有16...
同样,转换为八进制或十六进制时,分别以8和16为基数进行相同的操作。 **行编辑程序的设计** 行编辑程序是用于文本编辑的简单工具,它允许用户在单一文本行内进行插入、删除、替换等操作。设计行编辑程序的关键点...
在16进制到10进制转换的过程中,可能会创建一个名为"Alpha"的矩阵来存储这些转换后的数值。 在压缩包中的`ok.m`文件很可能是实现这些操作的MATLAB脚本。它可能包含了定义矩阵、读取文件、转换数据和写入新文件的...
虽然16进制字符串可以方便地在文本中显示和传输,但通常不建议直接将16进制字符串存入数据库,因为这会增加存储空间并可能降低查询效率。如果需要存储,应先将16进制字符串转换回二进制数据再存入BLOB字段。读取时...
然后,利用`hex2dec`函数将16进制字符串转换为10进制整数,再通过`uint8`函数将其转换为0-255范围内的8位无符号整数,这是MATLAB处理颜色数据的标准格式。 接下来,通过嵌套循环,程序将每个通道的数值分配给相应的...
本文将深入探讨如何使用C#通过流模式读取和写入TXT文件,并将其内容转换为ASCII码。在Visual Studio 2008(VS2008)环境下,我们可以创建一个简单的应用程序来实现这一功能。 首先,让我们了解ASCII码。ASCII...
- **图片转二进制/字符串**:对图片进行读取,如果是使用`CLOB`,需要将图片转换为Base64字符串;如果是`BLOB`,则直接读取二进制流。 - **插入数据**:通过SQL插入语句,将转换后的图片数据插入到相应的字段中。 ...
这里使用了 `doubletobytes()` 函数将 double 转换为字节序列,`dbytetocstring()` 函数将字节序列转换为 16 进制字符串。 4. **二进制文件读取的不同方法**: 二进制文件的读取可以使用 fstream 类或者 CFile 类...
1. 从键盘接收字符:使用INT 16H中断服务例程,读取用户的键盘输入,并将其存入AL寄存器。 2. 判断字符类型:通过比较AL寄存器中的ASCII码值,判断字符是否为大写或小写字母。 3. 转换操作:如果字符是小写,将AL...
5. 下面程序的功能是从键盘读入菱形图案的行数(上三角行数),构造该菱形图案,并将其存入文本文件“D:\user\a.txt”中。该程序使用文件操作来实现图案存储。答案是:f.write(s+'\n')。解释:在该程序中,我们使用...
5. 在处理过程中,会调用一个名为`SBinaryAscii`的子程序,用于将16位无符号二进制数转换为ASCII码。这个子程序通过两个循环实现: - 第一个循环:将数字除以10并取余,余数用于构建ASCII码。 - 第二个循环:检查...
5. 创建二进制对象:在易语言中,这一步可能涉及创建一个“字节集”(易语言的二进制数据类型),并将组合后的二进制数存入其中。 6. 返回结果:最后,函数会返回这个二进制对象,供其他部分的代码使用。 通过学习...
3. **码值到点阵转换**:编写程序,遍历码表,将每个汉字的码值转换为其对应的点阵字模数据。这个过程可能涉及到位操作和数组填充。 4. **存储字库**:将转换得到的点阵字模数据以二进制文件形式存储,可以是单个大...
- **SEGD(FNC73)**:七段译码指令,将第四位指定的0-F(16进制)的数据转换为七段码,显示在七段显示器上。 - **SEGL(FNC74)**:带锁存的七段显示指令,用于控制一组或两组带锁存的七段译码显示,持续12个扫描周期。...
4. **进制转换**:八进制数126转换为十进制是8*8 + 2*1 + 6 = 66,而不是86。 5. **计算机系统功能**主要由CPU决定,但其他组件如内存、硬盘、显卡等也会影响性能。 6. **ASCII码**:字符"D"的ASCII码是68,不是65...
接下来,我们要将Blob字段`EquipmentBlob`中的第17、19和21位字符转换为数字并分别存入新字段。由于Blob数据是以二进制形式存储的,我们需要先将其转换为十六进制字符串,以便我们可以访问单个字符。这里使用了`HEX...
9. **十进制与十六进制转换**:十进制数110.125转换为十六进制数为6E.2。 10. **安装程序文件名**:许多微机软件的安装程序文件名通常为setup.exe,这是Windows系统常见的安装程序名称。 **单项选择题知识点解析:...