`
lazy513
  • 浏览: 19510 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

二进制文件与字符串互转代码

    博客分类:
  • JAVA
 
阅读更多
    因为在传送音频文件的时候使用的开源包有bug...不得已使用通过消息传输的方式来传输文件,思路是先将文件转成16进制格式的字符串,经消息通道传送后还原成文件。示例代码如下:

//调用举例
public static void main(String[] args) {

String sFileContent;
sFileContent=fileToHexString(new File("c://原始文件.dat"));

System.out.println("文件内容:"+sFileContent);

hexStringToFile(sFileContent,new File("c://还原文件.dat"));

}

// 文件转成16进制字符串
private static String fileToHexString(File file) {

try {
DataInputStream din = new DataInputStream(new FileInputStream(file));
StringBuilder hexData = new StringBuilder();
byte temp = 0;
for (int i = 0; i < file.length(); i++) {

temp = din.readByte();

// 以十六进制的无符号整数形式返回一个字符串表示形式。
String str = Integer.toHexString(temp);

if (str.length() ==8) {// 去掉补位的f
str = str.substring(6);
}
if (str.length() == 1) {
str = "0" + str;
}
hexData.append(str.toUpperCase());
}

din.close();

return hexData.toString();

} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}

// 16进制字符串转成文件
private static void hexStringToFile(String sHex,File file) {

try {
BufferedOutputStream bof=new BufferedOutputStream(new FileOutputStream(file));
bof.write(hexStr2Bytes(sHex));
bof.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}

//辅助hexStr2Bytes()
private static byte uniteBytes(String src0, String src1) {
        byte b0 = Byte.decode("0x" + src0).byteValue();
        b0 = (byte) (b0 << 4);
        byte b1 = Byte.decode("0x" + src1).byteValue();
        byte ret = (byte) (b0 | b1);
        return ret;
    }
   
    //bytes转换成十六进制字符串,辅助hexStringToFile()
    public static byte[] hexStr2Bytes(String src) {
        int m=0,n=0;
        int l=src.length()/2;
        //System.out.println(l);
        byte[] ret = new byte[l];
        for (int i = 0; i < l; i++) {
            m=i*2+1;
            n=m+1;
            ret[i] = uniteBytes(src.substring(i*2, m),src.substring(m,n));
        }
        return ret;
    }
分享到:
评论

相关推荐

    在二进制文件中搜索字符串、十六进制甚至另一个二进制文件_Python

    本教程将深入探讨如何使用Python进行二进制文件的搜索,包括搜索字符串、十六进制值以及嵌入的二进制文件。 首先,搜索字符串在二进制文件中可能涉及到读取文件的字节流并查找特定的ASCII字符序列。Python的内置`...

    1.二进制字符串转十进制数值_labview_二进制转十进制_

    在LabVIEW编程环境中,二进制字符串转换为十进制数值是常见的操作,尤其是在处理数据或进行计算时。本文将详细讲解如何利用LabVIEW实现这一转换,并探讨相关知识点。 首先,我们要理解二进制和十进制之间的基本概念...

    易语言十六进制与字符串转换

    又如在处理二进制文件时,我们需要先将文件内容读取为十六进制字符串,然后再进行分析或处理。 总结来说,易语言十六进制与字符串转换涉及了基础的数据类型转换、线程编程以及源码学习。理解并掌握这些知识点,对于...

    Lua小程序十六进制字符串和二进制数据间的转换[借鉴].pdf

    在上面的代码中,我们首先打开了二进制数据文件,读取了文件的内容,然后使用 for 循环来遍历整个数据,每次将每个字节转换为十六进制字符串,最后将所有十六进制字符串连接起来。 本文展示了如何使用 Lua 实现十六...

    16进制Ascll与字符串相互转换

    本篇文章将深入探讨16进制ASCII(美国标准信息交换代码)值与字符串之间的转换,这对于理解底层数据处理和编程实践至关重要。 ASCII码是一种字符编码标准,它为每个可打印或控制的字符分配了一个唯一的7位二进制数...

    十六进制与字符串转换

    例如,你可以将二进制文件内容读取到一个字符数组,然后使用上述方法将其转换为十六进制字符串进行显示或存储。 为了更好地理解这些概念,我们可以看一个简单的例子: ```c #include #include #include char* ...

    PHP 字符串与二进制互转

    以上代码中的`stringToBinary()`和`binaryToString()`函数可以实现字符串与二进制的直接转换,但请注意,这个实现并不处理非ASCII字符。 通过理解这些基础知识和使用PHP提供的内置函数,开发者可以有效地处理字符串...

    查看二进制文件的常用软件

    3. **搜索与替换**:EditPlus允许用户在二进制文件中进行搜索,可以按字符、字符串或十六进制值进行查找。虽然替换功能在二进制文件中通常较少使用,但在某些特定情况下,如修改特定字节,这功能也能派上用场。 4. ...

    ASCII转换至十六进制字符串与二进制字符串显示_labview_字符串转换_

    标题提到的"ASCII转换至十六进制字符串与二进制字符串显示"是指将ASCII编码的字符转换为对应的十六进制和二进制表示形式,并在LabVIEW界面上进行展示。下面我们将深入探讨这个主题。 首先,ASCII(美国标准信息交换...

    将二进制文件转化为字符文件

    在IT领域,尤其是在编程中,有时我们需要将二进制文件转换为字符文件,这通常涉及到数据的编码和解码过程。二进制文件通常包含原始的机器可读数据,而字符文件则是人类可读的文本文件。在本场景中,我们要讨论如何在...

    易语言字节集到二进制互转

    在压缩包中的"易语言字节集到二进制互转源码"文件,应该包含了实现以上转换功能的具体源代码。通过阅读和理解这些源码,你可以学习到如何在实际项目中灵活运用这些转换方法。 总结来说,易语言中的字节集到二进制互...

    将二进制文件转换为16进制

    在IT领域,二进制文件和十六进制文件都是数据存储和传输的常见形式。二进制文件(bin文件)通常包含机器可读的原始字节流,而十六进制文件则是二进制数据的一种人类可读的表示方式。本文将深入探讨如何将二进制文件...

    16进制字符串显示图片工具

    在IT领域,16进制(Hexadecimal)是一种常见的数值表示方式,特别...通过这样的工具,开发者和数据分析师可以直观地查看和分析16进制数据,尤其是在处理二进制文件或网络通信数据时,能帮助他们更好地理解和调试问题。

    step7-300 16进制转换成字符串

    在西门子的PLC编程中,16进制常用于存储和传递二进制数据,因为它的表示更紧凑,且与计算机内部的二进制系统更为匹配。 西门子的STEP7是一款专门用于编程SIMATIC S7系列PLC的软件工具,如S7-300和S7-400。它提供了...

    八进制数值字符串转ASCII码字符串C#实现

    八进制是一种基于8的计数系统,常用于计算机科学,而ASCII码(美国标准信息交换代码)则是一种用7位二进制数表示128个字符的标准编码。在C#中,理解如何进行这种转换是至关重要的,特别是当你需要处理字符数据时。 ...

    16进制转字符串

    4. **数据库存储**:某些数据库系统可能需要将二进制数据以十六进制字符串的形式存储,以便于索引或搜索。 #### 总结 十六进制到字符串的转换是计算机科学中一个重要的基础概念,它在多种场景下都有应用。通过上述...

    VB6 读取二进制文件并显示.txt

    这段代码演示了如何在 VB6 环境下读取一个二进制文件,并将其内容转换为十六进制字符串的形式输出。通过这种方式,可以方便地查看或分析文件的内容。此外,代码还包含了基本的错误处理逻辑,以确保程序能够稳定运行...

    Base64转二进制文件,Base64 To File

    提供的文件列表中,`Base64_Convert.exe`很可能是一个执行程序,用于实现这个功能,即读取包含Base64编码的文本文件(如`Base64转二进制文件.b64`),并将其转换为二进制文件。`Base64转二进制文件.docx`和`Base64转...

    哈夫曼树二进制与字符串转换

    哈夫曼树,又称最优二叉树或最小带权路径长度树,是一种特殊的二叉树结构,常用于数据编码和解码,特别是在...在提供的压缩包文件“哈夫曼树二进制与字符串转换”中,应包含实现这一功能的源代码,供学习者参考和研究。

    matlab开发-将二进制字符串转换为十进制值

    在MATLAB中,二进制字符串到十进制值的转换是常见的操作,尤其是在处理数字信号处理、数据编码或通信领域。本知识点将详细介绍如何在MATLAB中进行这种转换,并结合提供的`Bin2Dec.m`脚本来理解其实现。 首先,我们...

Global site tag (gtag.js) - Google Analytics