如题: 练习代码, 详细在Github上scala 案例下面
Github: https://github.com/duchaoqun/aoye
package info.aoye
import java.io.{File, FileInputStream}
import java.io.BufferedWriter
import java.io.FileWriter
import java.io.IOException
object BinToHex extends {
val hexSymbols = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f")
val BITS_PER_HEX_DIGIT = 4
def toHexFromByte(b: Byte): String = {
val leftSymbol = ((b >>> BITS_PER_HEX_DIGIT) & 0x0f).toByte
val rightSymbol = (b & 0x0f).toByte
hexSymbols(leftSymbol) + hexSymbols(rightSymbol)
}
def toHexFromBytes(bytes: Array[Byte]): String = {
if (bytes == null || bytes.length == 0) return ""
// there are 2 hex digits per byte
// 每个byte有两个hex字符
// 创建一个缓冲区来存放这个内容
val hexBuffer = new StringBuilder(bytes.length * 2)
// for each byte, convert it to hex and append it to the buffer
// 然后操作每一个byte, 把他转换成hex后添加到缓冲区中.
bytes.foreach(b => hexBuffer.append(toHexFromByte(b)))
hexBuffer.toString
}
@throws[IOException]
def main(args: Array[String]): Unit = {
try {
val fileInput = new File("C:\\Users\\ducha\\Desktop\\1.jpg")
val fileOutput = new File("C:\\Users\\ducha\\Desktop\\1.txt")
// 定义输入对象
val fis = new FileInputStream(fileInput)
// 定义输出对象
val fos = new BufferedWriter(new FileWriter(fileOutput))
// 定义缓冲数组
val bytes = new Array[Byte](1)
while(fis.read(bytes)==1){
fos.write(toHexFromBytes(bytes))
}
// 刷新并写入数据
fos.flush()
fos.close()
} catch {
case e: Exception =>
e.printStackTrace()
}
}
}