Предполагая, что вы задаете вопрос о дизайне веб-сервисов REST и точнее относительно успеха / ошибки.
Я думаю, что существует 3 разных типа дизайна.
Вам решать:)
В зависимости от API я бы выбрал 2 или 3 (предпочитаю 2 для json rest apis). Еще одна вещь, которую я испытал при разработке REST Api, - это важность документации для каждого ресурса (url): параметры, тело, ответ, заголовки и т. Д. + Примеры.
Я также рекомендовал бы использовать jersey (реализация jax-rs) + genson (java / json databinding library). Вам нужно только удалить genson + jersey в вашем пути к классу, и json автоматически поддерживается.
EDIT:
Quick'n'dirty:
int value = 0x48454C4F;
Console.WriteLine(Encoding.ASCII.GetString(
BitConverter.GetBytes(value).Reverse().ToArray()
));
Преобразование интервала к байтам, инвертирование массива байтов для правильного порядка и затем получение символьного представления ASCII от него.
Править: Обратный метод является дополнительным методом от.NET 3.5, только для получения информации. Инвертирование порядка байтов не может также быть необходимо в Вашем сценарии.
С наилучшими пожеланиями, David
Символ? Возможно, Вы ищете эту удобную небольшую функцию помощника?
Byte[] b = BitConverter.GetBytes(i);
Char c = (Char)b[0];
[...]
Не ясно, действительно ли это, что Вы хотите, но:
int x = yourNumber();
char a = (char)(x & 0xff);
char b = (char)((x >> 8) & 0xff);
char c = (char)((x >> 16) & 0xff);
char d = (char)((x >> 24) & 0xff);
Это предполагает желание байтов, интерпретируемых как самый низкий диапазон символов Unicode.
Я попробовал его несколько путей и показал время, потраченное для преобразования 1000000 ints.
Встроенный метод преобразования, 325 000 галочек:
Encoding.ASCII.GetChars(BitConverter.GetBytes(x));
Преобразование указателя, 100 000 галочек:
static unsafe char[] ToChars(int x)
{
byte* p = (byte*)&x)
char[] chars = new char[4];
chars[0] = (char)*p++;
chars[1] = (char)*p++;
chars[2] = (char)*p++;
chars[3] = (char)*p;
return chars;
}
Bitshifting, 77 000 галочек:
public static char[] ToCharsBitShift(int x)
{
char[] chars = new char[4];
chars[0] = (char)(x & 0xFF);
chars[1] = (char)(x >> 8 & 0xFF);
chars[2] = (char)(x >> 16 & 0xFF);
chars[3] = (char)(x >> 24 & 0xFF);
return chars;
}
Действительно получите 8 блоков байта:
int a = i & 255; // bin 11111111
int b = i & 65280; // bin 1111111100000000
Действительно разломайте первые три байта на единственный байт, просто разделите их на надлежащее число и выполните другого логичного и получить Ваш заключительный байт.
Править: Решение Jason со сдвигами разряда намного более хорошо, конечно.
.NET использует Unicode, символ составляет 2 байта не 1
Преобразовать между двоичными данными, содержащими non-unicode текстовое использование Система. Текст. Кодирование класса.
Если Вы хотите 4 байта, и не символы затем заменяют символ байтом в ответе Jason