一個簡單的十六進位制解碼器
以下 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
- 二進位制,八進位制,十進位制,十六進位制之間的轉換
- Qt進位制轉換(十進位制轉十六進位制)QT
- 一看就懂二進位制、八進位制、十六進位制數轉換十進位制
- Linux 上最好的十六進位制編輯器Linux
- 二進位制、十進位制與十六進位制相互轉化
- 八進位制,十六進位制和浮點數
- JavaScript十六進位制和八進位制字面量JavaScript
- 【進位制轉換】二進位制、十六進位制、十進位制、八進位制對應關係
- 十進位制轉十六進位制(藍橋杯之前每日一題)每日一題
- 進位制之間的轉換之“十六進位制 轉 十進位制 轉 二進位制 方案”
- JAVA 二進位制,八進位制,十六進位制,十進位制間進行相互轉換Java
- 計算機基礎進位制轉換(二進位制、八進位制、十進位制、十六進位制)計算機
- Qt解析十六進位制串QT
- 整數轉化成八進位制、十六進位制、二進位制,以及轉回
- [計算機基礎] 計算機進位制轉換:二進位制、八進位制、十進位制、十六進位制計算機
- C++資料格式化5 - uint轉換成十六進位制字串&二進位制的data列印成十六進位制字串C++UI字串
- 十六進位制減法計算
- printf十六進位制輸出64位值的方法
- 教你如何進行數倉字串、二進位制、十六進位制互轉字串
- 藍橋杯 基礎練習 十六進位制轉八進位制
- 遞迴函式實現十進位制正整數轉換為二進位制,八進位制,十六進位制遞迴函式
- 十六進位制編輯器推薦/對比/選用
- 16進位制的簡單運算(迴圈)
- C++輸入十進位制數,輸出對應二進位制數、十六進位制數C++
- Java十六進位制補0(例項)Java
- JavaScript 生成十六進位制顏色值JavaScript
- 常用單位進位制
- 你知道二進位制、八進位制、十進位制、十六進位制的區別嗎?它們分別有什麼應用場景?
- printf與scanf如何輸出、輸入十六進位制與八進位制數
- Go語言實現十進位制轉換成二、八、十六進位制Go