PDA

View Full Version : نوشته نشدن مقدار x00\ در فایل



NIMA_1981
یک شنبه 29 اسفند 1389, 01:31 صبح
سلام دوستان

من می خوام داخل یک فابل به صورت هگزا دسیمال بنویسم همه چه درست کار میکنه اما وقتی می خوام مقدار 0 را وارد کنم کلا نوشته نمیشه و هرمقداری هم که بعد از x00\ قرار بگیره دیگه نوشته نمیشه میشه راهنمایی کنید


#include <stdio.h>
#include <string.h>
int main() {
char str[100];
strcpy(str,"\x08\xff\x21\x41\xf3\x21\x55\x36");
FILE *fp ;
fp = fopen("Binary.txt", "w");
fwrite(str,sizeof(char),strlen(str),fp);
fclose(fp);
}
بعد از اجرای کد بالا خروجی به این صورت است
http://up.iran-ps.com/images/835jj.jpg
اما وقتی این قسمت کد را عوض کنم و صفر قرار بدم


strcpy(str,"\x08\xff\x21\x41\x00\x21\x55\x36");

خروجی اینجوری میشه
http://up.iran-ps.com/images/751pp.jpg

با تشکر

NIMA_1981
یک شنبه 29 اسفند 1389, 02:59 صبح
البته به این نتیجه رسیدم که strlen وقتی به کد x00\ می رسه کلا متوقف میشه من از این دستور برای شمارش استفاده کردم وقتی دستی وارد میکنم این مقدار را کل کد ها عوض میشه

hi level hdd
یک شنبه 29 اسفند 1389, 11:08 صبح
با سلام
عدد صفر کاراکتر null هستش و به رشته میفهمونه که به انتهای رشته رسیدی . به جای اضافه کردن 0x00
مقدار عدد صفر رو به رشتتون الحاق کنید. 96 کد هگزشو دربیارید

NIMA_1981
یک شنبه 29 اسفند 1389, 11:22 صبح
سلام
کد 96 دسیمال رو اگه به هگزادسیمال تبدیل کنیم 60 میشه من رشته را اینحوری تغییر دارم


strcpy(str,"\x08\xff\x60\xf3\x21\x55\x36");
اما مقدار 60 رو اضافه کرد که اشتباه میشه
http://up.iran-ps.com/images/163u1.jpg

من میهوام مقدار 00 درج بشه اینحوری
http://up.iran-ps.com/images/484u2.jpg
ممنون اگه دوباره راهنمایی کنید

NIMA_1981
یک شنبه 29 اسفند 1389, 11:29 صبح
این هم جدول
http://www.asciitable.com/index/asciifull.gif

tdkhakpur
یک شنبه 29 اسفند 1389, 12:51 عصر
با strcpy به نتیجه نمی رسید بهتره یک تابع برای تبدیل عدد هگز به رشته طراحی کنید.
به نظزم قبلا کد تبدیل داخل سایت قرار داده شده.

hi level hdd
یک شنبه 29 اسفند 1389, 13:14 عصر
خوب این که بنظرم ساده تره .خود رشته 00 رو بنویس بدون کاراکتر کنترلی x\

strcpy(str,"\x08\xff 00\xf3\x21\x55\x36");

NIMA_1981
یک شنبه 29 اسفند 1389, 13:35 عصر
باز هم نشد عدد 00 نوشته میشه اما مقدار های بعدی تغییر میکنن

NIMA_1981
یک شنبه 29 اسفند 1389, 13:46 عصر
با strcpy به نتیجه نمی رسید بهتره یک تابع برای تبدیل عدد هگز به رشته طراحی کنید.
به نظزم قبلا کد تبدیل داخل سایت قرار داده شده.
میشه بیشتر راهنمایی کنید یا لینک رو بدید

NIMA_1981
یک شنبه 29 اسفند 1389, 22:18 عصر
دوستان قبل از سال نو این مشکل رو حل کردم کد رو اینجا قرار میدم که اگه کسی خواست دیگه چند روز برای این موضوع وقت صرف نکنه



#include <string>
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
int main() {
const int BUFFER_SIZE = 44;
ofstream myFile;
myFile.open("out1.txt", ios::out | ios::binary);
char buffer[BUFFER_SIZE] =
{0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x01 ,0x00,0x01,0x00,0x80,0x4D,0x54,0x72,0x6B,0x00,0x00 ,0x00,0x16,0x80,0x00,0x90,0x3C,0x60,0x81,0x00,0x3E ,0x60,0x81,0x00,0x40,0x60,0x81,0x00,0xB0,0x7B,0x00 ,0x00,0xFF,0x2F,0x00};
for (int i = 0; i < BUFFER_SIZE; ++i) {
myFile << hex << buffer[i];

}
myFile << dec;
myFile.close();
}



موفق باشید