bcd
От: GvinPin Россия  
Дата: 22.04.10 12:46
Оценка:
Добрый день!

Есть 2 int их значения от 0 до 8, как их поместить в char? чтоб каждое занимало по 4 бита?
Re: bcd
От: Аноним  
Дата: 22.04.10 12:51
Оценка:
Здравствуйте, GvinPin, Вы писали:

GP>Добрый день!


GP>Есть 2 int их значения от 0 до 8, как их поместить в char? чтоб каждое занимало по 4 бита?


примерно так char c = (char) ((byte)int1 && (byte)(int2 shift left 4))
Re: bcd
От: toulon Россия  
Дата: 22.04.10 13:04
Оценка:
Здравствуйте, GvinPin, Вы писали:

GP>Добрый день!


GP>Есть 2 int их значения от 0 до 8, как их поместить в char? чтоб каждое занимало по 4 бита?


char ch = (char)(int1 & 0x0F) | (char)((int2<<4) & 0xF0)
как то так
Re: bcd
От: kpcb Россия  
Дата: 22.04.10 13:32
Оценка: 32 (1) +1
Здравствуйте, GvinPin, Вы писали:

GP>Добрый день!


GP>Есть 2 int их значения от 0 до 8, как их поместить в char? чтоб каждое занимало по 4 бита?


А проще всего так:

int c = a * 0x10 + b;
Re[2]: bcd
От: Кодт Россия  
Дата: 23.04.10 10:47
Оценка:
Здравствуйте, kpcb, Вы писали:

K>А проще всего так:

K>
K>int c = a * 0x10 + b;
K>

Главное, это отражает суть.
  1000*a+  100*b+  10*c+  1*d // сборка десятичного 4-разрядного числа
0x1000*a+0x100*b+0x10*c+0x1*d // сборка двоичнодесятичного (или шестнадцатиричного) 4-разрядного числа


Однако, данная формула реализует принцип GIGO: если на вход подать цифры вне рабочего диапазона (0-9 или 0-15 соответственно), получится ерунда.
Впрочем, ерунда получится и в упомянутых выше по ветке формулах — только вид у этой ерунды будет другой.
Перекуём баги на фичи!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.