Заблокирован
|
||||||
1 | ||||||
Std::fstream почему функция write принимает параметр char* а не unsigned char* (аля byte*) ?06.05.2014, 10:53. Показов 2966. Ответов 6
Метки нет Все метки)
(
Ну собственно сабж...
0
|
|
06.05.2014, 10:53 | |
Ответы с готовыми решениями:
6
(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&
ошибка в программе (cannot convert 'std::string {aka std::basic_string<char>}' to 'const char*')
|
:)
![]() 4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
|
06.05.2014, 11:13 | 2 |
![]() Решение
Не так. Байт - это 8 бит. И правило интерпретации этих бит может быть совершенно различным: 0..255, -128..127 ... это из популярных. Но в общем случае - это всего лишь 256 различных значений.
Указатель на char, равно как и unsigned char, как и signed char совершенно равноправно могли бы быть типами в качестве типа первого аргумента write, т.к. все они позволяют максимально возможно указывать на данные и смещаться по ним с минимальным адресуемым приращением (как должно быть известно - минимальная единица адресации это байт). Никакой потери данных не будет, т.к. размеры всех char'ов одинаковые sizeof(char)==sizeof(signed char)==sizeof(unsigned char)==1. Весь вопрос лишь в том, как интерпретировать данные. О чем я сказал в самом начале.
2
|
Заблокирован
|
|||||||||||
06.05.2014, 11:30 [ТС] | 4 | ||||||||||
ну тога не совсем понятно, вот есть у меня переменная типа unsigned char:
0
|
:)
![]() 4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
||||||
06.05.2014, 11:35 | 5 | |||||
char, signed char и unsigned char это три различных типа.
Другое дело, что в конкретной ОС char может представлять либо значения unsigned char, либо signed char. Поэтому в стандарте об этом ничего не сказано. Ну, может быть только, что implementation defined ![]() Добавлено через 2 минуты Записывается побитовая копия байта. Как ее интерпретировать - дело десятое. Верно.
1
|
Неэпический
|
|
06.05.2014, 11:36 | 6 |
![]() Решение
я к тому что
поэтому забив строго unsigned char * мы получим жесткую привязку, хотя не вижу в этом ничего страшного - в любом случае это 1 байт именно. Так же есть сноска как отличить определяется char как signed или unsigned
1
|
Заблокирован
|
|
06.05.2014, 11:40 [ТС] | 7 |
---
Добавлено через 3 минуты всё встало на свои места, спасибо! ![]() По сути же пишутся биты как бы и тут главное размер, а не интерпретация, интерпретировать эти биты можно как угодно же... Вот я нубарь ![]() ![]()
0
|
06.05.2014, 11:40 | |
Помогаю со студенческими работами здесь
7
Приведение типов unsigned char[2] to unsigned char [64] Сделать преобразование unsigned char в char, а затем типу int IntelliSense: отсутствует оператор "<<", соответствующий этим операндам типы операндов: std::basic_ostream<char, std::char_traits<char> Сложности при конвертации из char в unsigned char * Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |