У меня есть длинная длинная переменная без знака, которую я хочу записать в двоичный файл. Однако мне нужно пренебречь всеми ведущими байтами, которые равны нулю.
Это означает, чтоПреобразовать unsigned long в char *, игнорировать высокие 0 байт
unsigned long long toWrite = 4;
должен написать 0x04 и 0x00 не 0x00 0x00 0x00 0x00 0x00 0x00 0x04 к потоку.
#include <fstream>
int main(){
std::ofstream out("test.txt", std::ios::binary);
unsigned long long toWrite = 4;
out << cutoffZeroBytes(toWrite);
out.close();
return 1;
}
Я думал о том, чтобы cutoffZeroBytes
функцию, которая возвращает char*
. Но если в середине есть нулевые байты (например, 0x03 0x00 0xf1), то я думаю, что я не мог записать его в поток, так как 0x00 определяет конец массива char
. Я немного незнакомый здесь и нуждаюсь в некоторой помощи.
вы можете вернуть символ * и длину. Обработка символа char *, как строки, является лишь соглашением, а не требованием. Это так же справедливо, если рассматривать его как указатель на массив символов. Вы не могли использовать оператор <<. ostream :: write должен работать нормально. – xaxxon
также, какой выход вы ожидаете, если значение на самом деле 0? – xaxxon
сделать минимум до одного байта и решить проблему 0 – J3STER