一個簡單的十六進位制解碼器
以下 C# 語言程式(hexdecoder.cs)讀取內容為十六進位制數字的字串的文字檔案,輸出到二進位制檔案中。輸入檔案可以有多行,每行的長度可以不同,要求檔案的總長度為偶數。
using System;
using System.IO;
using System.Text;
static class Hexdecoder
{
static int HexChar2Int(char c)
{
if (c >= '0' && c <= '9') return c - '0';
if (c >= 'A' && c <= 'F') return c - 'A' + 10;
if (c >= 'a' && c <= 'f') return c - 'a' + 10;
throw new Exception("Invalid hex char: [" + c + "]");
}
static byte GetByte(string s, int i)
{
return (byte)(HexChar2Int(s[2 * i]) * 16 + HexChar2Int(s[2 * i + 1]));
}
static void Main(string[] args)
{
try {
if (args.Length != 2) throw new Exception("Usage: hexdecoder.exe input-file output-file");
var sb = new StringBuilder();
foreach (var s in File.ReadLines(args[0])) sb.Append(s.Trim());
using (var sw = new BinaryWriter(File.OpenWrite(args[1]))) {
var s = sb.ToString();
if (s.Length % 2 != 0) throw new Exception("Total length must be even number");
var bs = new byte[s.Length / 2];
for (var i = 0; i < bs.Length; i++) bs[i] = GetByte(s, i);
sw.Write(bs);
}
} catch (Exception ex) {
Console.WriteLine((ex.Message.StartsWith("Usage: ") ? "" : "Error: ") + ex.Message);
}
}
}
相關文章
- 進位制詳解:二進位制、八進位制和十六進位制
- 十六進位制計算器
- 一個簡單的二進位制加法器
- 十進位制轉十六進位制
- 遞迴-進位制轉換器(十六進位制以內)遞迴
- 十六進位制顏色值簡寫
- JavaScript 二進位制、八進位制與十六進位制JavaScript
- 二進位制,八進位制,十進位制,十六進位制的相互轉換
- 十進位制——二 (八、十六 )進位制
- 十六進位制數轉十進位制
- java中二進位制、八進位制、十進位制、十六進位制的轉換Java
- 二進位制,八進位制,十進位制,十六進位制之間的轉換
- 簡單二進位制編碼(SBE)
- Qt進位制轉換(十進位制轉十六進位制)QT
- 一看就懂二進位制、八進位制、十六進位制數轉換十進位制
- 十六進位制轉換為八進位制
- 十六進位制轉換為十進位制
- 十六進位制在正規表示式中的使用簡單介紹
- 二進位制、十進位制與十六進位制相互轉化
- php中RGB轉十六進位制、十六進位制轉RGBPHP
- 位,位元組,二進位制,十六進位制間的關係
- 大話二進位制,八進位制,十進位制,十六進位制之間的轉換
- Python 進位制互相轉換(二進位制、十進位制和十六進位制)Python
- linux hexdump - ”十六“進位制檢視器Linux
- 八進位制,十六進位制和浮點數
- JavaScript十六進位制和八進位制字面量JavaScript
- [MSSQL]將十進位制轉成十六進位制SQL
- 【進位制轉換】二進位制、十六進位制、十進位制、八進位制對應關係
- 十進位制轉換為十六進位制和二進位制程式碼例項
- 十進位制轉十六進位制(藍橋杯之前每日一題)每日一題
- Oracle中的二進位制、八進位制、十進位制、十六進位制相互轉換函式Oracle函式
- 進位制之間的轉換之“十六進位制 轉 十進位制 轉 二進位制 方案”
- JAVA 二進位制,八進位制,十六進位制,十進位制間進行相互轉換Java
- 計算機基礎進位制轉換(二進位制、八進位制、十進位制、十六進位制)計算機
- Linux 上最好的十六進位制編輯器Linux
- C語言十進位制,八進位制,十六進位制輸出分析C語言
- 【進位制轉換】十進位制與十六進位制相互轉換方法
- 基礎練習 十六進位制轉八進位制