Скажет, у меня есть следующий:Алгоритм написать дополнение до два числа в памяти переносимого
int32 a = ...; // value of variable irrelevant; can be negative
unsigned char *buf = malloc(4); /* assuming octet bytes, this is just big
enough to hold an int32 */
Есть эффективным и портативного алгоритма для записи в двоичном дополнении тупоконечника представления a
на 4 байта буфер buf
портативным способом? То есть, независимо от того, как машина, с которой мы работаем, представляет собой целые числа внутри, как я могу эффективно записать представление дополнения двух в a
в буфер?
Это C вопрос, так что вы можете рассчитывать на стандарт C в , чтобы определить, если ваш ответ соответствует требованиям портативности.
использовать int вместо int32. Я считаю, что int - это комплимент 2. Кроме того, endianess имеет значение только тогда, когда вы разговариваете с другим компьютером, проходящим через межсетевые данные. если это проблема, тогда вам нужно выполнить проверку подлинности на этой машине, чтобы убедиться, что она совместима. сделайте это с помощью passin в char '1' и отправьте им значение int для' 1'. Имеет ли это смысл? –
@PaulNikonowicz: стандарт C не требует, чтобы 'int' был дополнением двух. В этом случае конечная величина имеет значение, потому что мы говорим о написании целого числа в символьном буфере, и мы не хотим, чтобы число было написано «назад». –
буфер символов избавит вас от проблемы с контентом. –