Бред

Ответить в тред Ответить в тред
Check this out!
Аноним 06/10/21 Срд 15:04:34 2556546431
image.png 59Кб, 280x268
280x268
Сап двач, тематика мертва, мне больше негде спросить, может тут есть мамкины погромисты.

Пишу программу на С++ для мк Atmega8. Мне надо перевести unsigned int 32 бита в массив char. Я использовал функцию sprintf, и я никак не могу перевести число больше чем 65535, любое число которое больше 65535 превращается в рандомный бред, в отрицательные числа и тд.
Вот код:

uint32_t Tn = TCNT1 / 2;
uint32_t Time = (T * 30000) + Tn;\t
char Str[16];
uint8_t n=sprintf(Str, "%lu\n", Time);

Я пробовал модификаторы
%u
%d
%lu
%ld
%llu
%lld
%lu\n
%ld\n
%llu\n
%lld\n
Ничего из этого не заработало.
Выручайте, молю.
Аноним 06/10/21 Срд 15:08:12 2556548422
>>255654643 (OP)
Отец ардуинщик - горе в семье.
Попробуй %llu.
Аноним 06/10/21 Срд 15:17:12 2556553483
Аноним 06/10/21 Срд 15:22:07 2556556324
Аноним 06/10/21 Срд 15:25:51 2556558465
16 битное число как раз ограничивается ограничивается 65535.
У тебя массив который ты заполняешь - на 16.
Число на 32.
Ничего не смущает?
Аноним 06/10/21 Срд 15:27:21 2556559156
Аноним 06/10/21 Срд 15:27:26 2556559207
>>255655846
Короче если ты тупой - ты пытаешься засунуть больше чем помещается в массив, числа меньше 65535 приводятся к 16 битному интеджеру, а остальные нет, вот и вылетает хуйня эта.
Аноним 06/10/21 Срд 15:28:47 2556560028
>>255655920
Бля, нихуя ты анальник заводной
Аноним 06/10/21 Срд 15:30:59 2556561329
>>255655920
Бля, нихуя ты завод анальный
Аноним 06/10/21 Срд 15:31:19 25565615310
>>255655920
300 к наносек в треде я спокоен
Аноним 06/10/21 Срд 15:32:58 25565624911
>>255655846
>У тебя массив который ты заполняешь - на 16.
На 16 символов (цифр). Ты - хуй.
>>255655920
>ты тупой
Но, ю.
Аноним 06/10/21 Срд 15:35:12 25565635212
Аноним 06/10/21 Срд 15:37:13 25565646413
>>255656249
Долбаеб, А В КАКОМ ФОРМАТЕ ТАМ ЦИФРЫ ХРАНИТСЯ БУДУТ? В любом случае, не зависимо от кодировки, меньше места так занимать число не станет
Аноним 06/10/21 Срд 15:37:19 25565647014
>>255654643 (OP)
Вообще, ебани просто в цикле, printf и так тяжёлая функция, а тут ещё и МК.
Аноним 06/10/21 Срд 15:40:27 25565663615
>>255656464
Хуеплет, В АСКИИ В 16 ЦИФР влезает 2^39 примерно, а ты попутал берега байты и биты.
Аноним 06/10/21 Срд 15:43:06 25565677916
>>255654643 (OP)
Ты где-то проебался с signed/unsigned инт, посмотри дефолтные инициализации что объявляют и документацию метода. Была подобная хуйня в жабе, так что конкретно чё делать не скажу
Аноним 06/10/21 Срд 15:46:56 25565698017
>>255656636
>>255656352
>>255656249

Окей дегенераты, даю вам место в памяти, ровно 16 байт(128 бит) запишите как мне туда число 4,294,967,293 которое весит ровно 4 байта(32 бит), то есть вам нужно получить 10 восьмибитных чисел, каждое из которых будет равнятся одному символу ASCII по весу. Битовые операции разрешены, жду функцию, вернусь через пол часа
Аноним 06/10/21 Срд 15:47:14 25565699218
Аноним 06/10/21 Срд 15:52:15 25565729719
Аноним 06/10/21 Срд 15:52:44 25565731720
>>255656779
Так вот же в коде все объявления.
Аноним 06/10/21 Срд 15:56:12 25565751421
>>255656992
например так
uint16_t n = 1234;
char c[4];
for(int i = 0; i < 4; i++) {
c = n & 0xFF;
n << 8;
}



могу ошибаться, пишу с телефона, и двач не встроен компилятор.
А вас все еще жду >>255656980
Аноним 06/10/21 Срд 15:57:07 25565756822
Аноним 06/10/21 Срд 15:57:44 25565760623
Аноним 06/10/21 Срд 15:57:54 25565761724
ййййй.JPG 49Кб, 892x784
892x784
>>255656980
О вырождение отечественого Ой-ти, вот вам код. Больше не позорьтесь.
Аноним 06/10/21 Срд 16:00:09 25565774325
image.png 23Кб, 745x342
745x342
>>255656980
Ты еблан? В чем сука проблема засунуть 10 байтов в 16 байтовый массив?
>о есть вам нужно получить 10 восьмибитных чисел, каждое из которых будет равнятся одному символу ASCII по вес
8битове что угодно по определению равняется весу ASCII
Аноним 06/10/21 Срд 16:01:56 25565785226
image 18Кб, 683x549
683x549
>>255654643 (OP)
>>255656249
>char Str[16];
О боже мой. Переведи число 65535 в двоичный код и посчитай сколько бит выйдет. Переведи любое число которое больше 65535 в двоичный код и посчитай сколько бит выйдет. Пиши char Str[32];
Аноним 06/10/21 Срд 16:03:04 25565792427
>>255657514
И у тебя получится набор левых символов, не имеющих отношения к цифрам
Аноним 06/10/21 Срд 16:04:00 25565797628
>>255657852
С 32 также работает. Я и 80 ставил,ничего не меняется.
Аноним 06/10/21 Срд 16:05:10 25565804329
>>255657852
Я отказываюсь верить что это не троллинг, нельзя быть таким тупым.
Аноним 06/10/21 Срд 16:05:42 25565808330
>>255657976
>uint8_t n=...
тут зачем 8 поставил?
Аноним 06/10/21 Срд 16:06:23 25565812131
Аноним 06/10/21 Срд 16:07:05 25565817132
>>255658083
Это возвращается количество символов. 8 бит достаточно
Аноним 06/10/21 Срд 16:09:38 25565831433
>>255654643 (OP)
Пробуй sprintf на itoa поменять.
Вообще ты уверен что проблема именно в этом? ты дебажил это говно или просто выводишь? Если последнее уверен что проблема не в том что функции вывода нормально все обрабатывается?
Аноним 06/10/21 Срд 16:16:27 25565873734
>>255658171
У тебя же 8 разрядный МК. Он вообще может умножить 100000 на 5 или нет? Попробуй это сделать и вывести в консоль
Аноним 06/10/21 Срд 16:19:06 25565890235
Ну тут надо к void привести а потом к char. Если запутаешься то лох это судьба.
Аноним 06/10/21 Срд 16:24:34 25565922736
>>255658314
Дебажил. Выводит любые строки. Проблема именно с переводом в строку.
Аноним 06/10/21 Срд 16:26:33 25565936737
>>255658737
С хуя ему не мочь умножить?
Аноним 06/10/21 Срд 16:32:03 25565973738
>>255659367
Хуй его знает, может сам мк не может в числа больше 65535
Аноним 06/10/21 Срд 16:34:59 25565990839
>>255659737
как он может не мочь? блять у него памяти не 16 бит
Аноним 06/10/21 Срд 16:36:37 25566002840
>>255659908
Хуй его знает, но стоит попробовать чтобы зря не писать код
Аноним 06/10/21 Срд 16:39:57 25566025041
image.png 350Кб, 427x427
427x427
Суй свой байт в мой аккумулятор, я знаю ты любишь складывать
Аноним 06/10/21 Срд 16:42:28 25566040842
>>255660250
Что аккумулирует ваш аккумулятор?
Аноним 06/10/21 Срд 16:47:32 25566067743
Ору с дауна ардуиншика опа. Сука не знаешь не лезь, ведь даже основы не можешь понять.
Аноним 06/10/21 Срд 16:47:56 25566070044
image.png 6Кб, 344x146
344x146
>>255659227
Ну тогда хз, если никак не пофиксишь можешь вот это использовать, на выходе будет число наоборот, с разворотом думаю сам справишься.
Аноним 06/10/21 Срд 16:50:36 25566085045
Эй, долбаеееб, у тебя таймер 16 бит, после перемножений выходит за рамки и обрубленный результат пишется в uint32_t, далее ты его переводишь. Вбей константу, не забудь в конце L, чтобы был не просто int
Аноним 06/10/21 Срд 16:52:15 25566095346
>>255660850
>даун увидел регистр таймера и сагрился, даже не понимая о чем речь
Аноним 06/10/21 Срд 16:54:06 25566106347
image.png 6Кб, 246x164
246x164
>>255660700
У тебя будут символы из списка пикрелейтед, а не то что нужно ОПу.
Аноним 06/10/21 Срд 16:55:29 25566114848
>>255660953
Ебать дебил, число изначально 16 бит, а не перевод кривой. Потому что int на твоей сраной ардуйне 16 бит, а не 32, как и регистры
Аноним 06/10/21 Срд 16:57:33 25566125849
>>255661148
>даун не может в статическую типизацию
Аноним 06/10/21 Срд 16:58:51 25566133950
>>255661063
Если опу нужна ASCII строка, то нормально оно отработает '0' +n дает ascii представление n.
Аноним 06/10/21 Срд 16:59:16 25566136151
>>255661258
Ну сиди тогда дальше ебись. Умных слов набрался, но так и не разобрался, что они значат
Аноним 06/10/21 Срд 17:03:18 25566156752
>>255661339
Это не твой любимый жс, маня
Аноним 06/10/21 Срд 17:04:50 25566165253
image.png 17Кб, 408x290
408x290
>>255661567
это такой троленг тупостью?
Аноним 06/10/21 Срд 17:06:44 25566173954
Аноним 06/10/21 Срд 17:10:34 25566193355
>>255661567
ты слепой и не заметил '' вокруг 0? Иначе мне страшно за российское ит, это пиздец просто.
'0' = 48;
Аноним 06/10/21 Срд 17:14:10 25566212056
>>255661933
Ты пытаешься чар сложить с интом.
Аноним 06/10/21 Срд 17:17:43 25566230457
>>255662120
И что? В C/С++ char это 1 байтнное число да и вообще везде, а не только в С, сразу видно зумерка который С не нюхал.
Аноним 06/10/21 Срд 17:18:24 25566234558
>>255662120
Пиздец, ты же троллишь? Или вас таким с скиллбокса выпускают?
Аноним 06/10/21 Срд 17:34:07 25566312159
>>255654643 (OP)
Найс тут погромисты 300кк обсуждают как перевести число в строку, от флорентины мозги скукожились?
Если нужно получить именно байтовое представление числа (т.е. как оно в памяти хранится), то юзаем memcpy(Str, &Time, 4)

Если просто в текстовый формат, то триллион вариантов (бтв, если пишите на с++ - юзайте string, символьные массивы - это С строки, а не с++)
1. to_string(Time).c_str()
2. itoa_s(Time, Str, 16, 10)
3. sprintf(Str, "%u", Time)
4. sstringstream stream; stream << Time; stream >> Str;

первые способы что в голову пришли
Аноним 06/10/21 Срд 17:41:41 25566353860
>>255662304
В шарпе char двухбайтовый))
Аноним 06/10/21 Срд 17:59:12 25566464161
>>255654643 (OP)
Какую библиотеку используешь для sprintf? Проверь чтобе спеки для компилятора и для линкера правильные стояли. Ну и процессор разумеется.
06/10/21 Срд 18:06:04 25566508062
>>255654643 (OP)
Во-первых, это С, не С++.
Во-вторых, у тебя массив из 16 элементов типа char, а не 16 байт или чего ты там ожидал.
В-третьих, sprintf работает правильно, записывает по адресу Str (начало массива) значение. Модификатор тут какую-то волшебную конвертацию не выполняет. Пользуйся функциями типа itoa, как уже было сказано.
Аноним 06/10/21 Срд 18:16:40 25566568863
>>255665080
Чтобы пользоваться itoa нужно знать какого размера у тебя число. А ты не знаешь.
06/10/21 Срд 18:22:36 25566603864
>>255665688
Какой ещё размер числа?
char itoa ( int value, char str, int base );
Целое значение, указатель на строку, основание системы счисления (2 для бинарной, 10 для десятеричной и т.д.)
Аноним 06/10/21 Срд 18:26:32 25566625865
Пишу программу на С++ для хуйни . Мне надо перевести хуйню хуйни 32 бита в хуйнюхуйни. Я использовал функцию fghfdukhsjfvbhrdfgw , и я никак не мог хуйнуть число больше чем 65535, любое число которое больше 65535 превращается в рандомный бред, в отрицательные числа и тд.
Вот код:
данные удалены
данные удалены
данные удалены
данные удалены
Аноним 06/10/21 Срд 19:18:19 25566964966
#include <stdio.h>
#include <stdlib.h>

itoa(Time, Str, 10);
Аноним 06/10/21 Срд 19:20:25 25566977567
Аноним 06/10/21 Срд 19:26:34 25567010268
>>255669775
Нет,

Error storage size of 'Str' isn't known
Настройки X
Ответить в тред X
15000
Макс объем: 20Mб, макс кол-во файлов: 4
Кликни/брось файл/ctrl-v
X
Ваш шидевор X
Стикеры X
Избранное / Топ тредов