Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> byte to int 
:(
    Опции темы
maksar
Дата 6.4.2006, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 24.11.2003

Репутация: нет
Всего: нет



Есть файл в котором содержатся такие вот байты 09 47 38 02.
Сразу возникает такой вот вопрос - Почему после считывания(FileStream - read) этой строки из файла в переменную типа байт, в переменной оказывается 9 71 56 2?
И второй вопрос:
Как отразить байты в переменой и конвертировать их в значение int
т.е. 02 38 47 09 - 37242633?
PM MAIL   Вверх
Дрон
Дата 6.4.2006, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

Репутация: 24
Всего: 93



Цитата(maksar @ 6.4.2006, 17:55 Найти цитируемый пост)
Сразу возникает такой вот вопрос - Почему после считывания(FileStream - read) этой строки из файла в переменную типа байт, в переменной оказывается 9 71 56 2?

Так всё ведь нормально... Я даже затрудняюсь сходу сформулировать в чём ты не прав.
Вот например, скажи есть ли разнца между XII и 12? Нет. И тут то же самое. Просто ты первый раз прочитал их в шестнадцатеричном виде, а второй раз в десятичном. Числа-то одни и те же, просто видишь ты их по-разному... Что-то меня в философию потянуло smile


Цитата(maksar @ 6.4.2006, 17:55 Найти цитируемый пост)
Как отразить байты в переменой и конвертировать их в значение int
т.е. 02 38 47 09 - 37242633?

Что значит "отразить байты"?

А в int можно так:
Код

int val = b[3] * 16777216 + b[2] * 65536 + b[1] * 256 + b[0];


Что по первому, что по второму вопросу рекомендую изучить хотя бы школьный курс про системы счисления и т.п.

Это сообщение отредактировал(а) Дрон - 6.4.2006, 17:02


--------------------
Да. Именно так.
PM   Вверх
mr.DUDA
Дата 6.4.2006, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Цитата(Дрон @ 6.4.2006, 16:02 Найти цитируемый пост)
А в int можно так:

Код
int val = b[3] * 16777216 + b[2] * 65536 + b[1] * 256 + b[0];


Лучше сдвигами:
Код
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            byte[] arr = new byte[] { 0x12, 0x78, 0xCD, 0xFE };
            int val = arr[3] << 24 | arr[2] << 16 | arr[1] << 8 | arr[0];
        }
    }
}



--------------------
user posted image
PM MAIL WWW   Вверх
-ser-
Дата 7.4.2006, 04:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 1.2.2005

Репутация: 5
Всего: 13



maksar, не слушай ты их. это все равно что если задать простой вопрос слету академиков. притом еще и почетных. вместо такого же простого ответа получишь трехтомное философское изречение на тему осмысления сознания бытия и причины зарождения сего вопроса в уме индивидуума. тем более, похоже, что один из них еще и буддист по убеждениям.

я вот даже фразу
Цитата
Числа-то одни и те же, просто видишь ты их по-разному...
вырезал, на стенку себе повесил, каждые день утром и вечером медитирую с ней.

и вот, получил ответ на твой вопрос.

слушай сюда.

существует класс BinaryReader, который читает не только побайтно, но и все стандартные типы данных из потока. поэтому тебе проще сразу и считывать int. так что в школу можно и не ходить и с переводом байтов не связываться.
Код

            using( BinaryReader br = new BinaryReader( fileStream ) )
            {
                    br.ReadInt32();
            } 





--------------------
"Тонкая, однако, работа." 
PM MAIL ICQ   Вверх
mr.DUDA
Дата 7.4.2006, 09:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



-ser-, smile


--------------------
user posted image
PM MAIL WWW   Вверх
Дрон
Дата 7.4.2006, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

Репутация: 24
Всего: 93



smile
Цитата(mr.DUDA @ 6.4.2006, 18:30 Найти цитируемый пост)
Лучше сдвигами

Блин, а ведь отрицательно сказывается на мне то, что я уже очень давно на Си не писал smile

Цитата(-ser- @ 7.4.2006, 05:21 Найти цитируемый пост)
существует класс BinaryReader, который читает не только побайтно, но и все стандартные типы данных из потока. поэтому тебе проще сразу и считывать int

Кстати, я о нём не знал smile



--------------------
Да. Именно так.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0487 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.