Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Записать 0xFF в файл

59K
18 апреля 2010 года
Graf_de_la_Fer
2 / / 18.04.2010
Имеется следующий код. Если я правильно понимаю, то конвертирующий hex string в ascii string. Все хорошо, пока не доходит до байта 0xff. При попытке записи в файл и последующего открытия его в шестнадцатиричном редакторе "FF" не присутствует. Из поиска стало известно, что oxff нельзя конвертировать в unicode. как эту дилемму обойти?

Код:
// An object storing the hex value
            string HexValue = "3f3300ff3f";
            // An object storing the string value
            string StrValue = "";
            // While there's still something to convert in the hex string
            while (HexValue.Length > 0)
            {
                // Use ToChar() to convert each ASCII value (two hex digits) to the actual character
                string a = HexValue.Substring(0, 2);
                uint b = System.Convert.ToUInt32(a, 16);
                char c = System.Convert.ToChar(b); //   ? для 255
                string d = c.ToString();
                StrValue += d;
//                StrValue += System.Convert.ToChar(System.Convert.ToUInt32(HexValue.Substring(0, 2), 16)).ToString();
                // Remove from the hex object the converted value
                HexValue = HexValue.Substring(2, HexValue.Length - 2);
            }
            // Show what we just converted
            Console.WriteLine(StrValue);
5
18 апреля 2010 года
hardcase
4.5K / / 09.08.2005
Так что хочется записать?
Текстовое представление строки в 16-ричной системе или ASCII коды строки в двоичной форме?
5
18 апреля 2010 года
hardcase
4.5K / / 09.08.2005
Ясно - нужно разобрать строку на байты и записать их в файл. Только зачем столько манипуляций со строкой?
Код:
using System;
using System.IO;
using System.Globalization;


namespace app1
{
    class Program
    {
       
        public static byte[] ParseBinary(string text) {
            var data = new byte[text.Length / 2];
            for(int pos = 0, i = 0; pos < text.Length; pos += 2, ++i) {
                data = byte.Parse(text.Substring(pos, 2), NumberStyles.HexNumber);
            }
            return data;
        }
       
        public static void Main(string[] args)
        {
            using(var stream = new FileStream("data.dat", FileMode.Create)) {
                var data = ParseBinary("FF0A3C");
                stream.Write(data, 0, data.Length);
            }
            Console.Write("Press any key to continue . . . ");
            Console.ReadKey(true);
        }
    }
}
59K
18 апреля 2010 года
Graf_de_la_Fer
2 / / 18.04.2010
Спасибо большое, все верно. Все таки полезно иногда почувствовать себя клиническим идиотом))
8.2K
18 апреля 2010 года
bagie2
299 / / 26.10.2008
а если строка хранится в виде xx-xx-xx-xx (например в таком виде дает BitConverter.ToString), то можно и еще короче

 
Код:
string hexString = "FF-0A-3C";
            File.WriteAllBytes("t:\\out.bin",
                Array.ConvertAll(hexString.Split('-'), n => byte.Parse(n, NumberStyles.HexNumber)));
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог