|
오전&오후 님이 쓰신 글 :
: 답변고맙습니다..
: 그런데 1234에 대한것이면..
: 저같은경우는 그대로 이거를 16진수로 넣고싶다이거죠..
: atoi를 이용해서 16진수로 바꾸면 4d2가 들어갑니다..
: 이방법은 sprintf()로 해도 된는데..
: 제가 원하는 방법은.,,1234면 16진수값으로 넣고 싶다 이거죠..
: 음 질문내용이 애매모호하나..ㅡ,.ㅡ;;
: 그러니까..
: 1234면....
: 0x01 0x02 0x03 0x04이런식으로 넣는거죠..배열에..
: 그러니까 1234의 16진수 값을 구하고 싶다는 애기가 아니라..
: 문자열로 1234가 들어왔다면 저값을 그대로 16진수값으로 넣고 싶다 이거죠..
:
: int i = 1234;
: char data[100];
:
: memset(data, 0x00, 100);
굳이 memset은 필요없습니다.
(개인적 의견으로는 void*는 C/C++에서 사라져야 할 암적인 존재라고 생각하지요. -_-)
itoa 호출 후, strlen(data)까지만 쓰면 되니까요.
: itoa(i, data, 16);
:
: 그러면 결과가 data[0] = 0x34, data[1]= 0x64, data[2] = 0x32, 가 들어가 있습니다..
: 제가 원한 결과는 data[0] = 0x01, data[1] = 0x02, data[3] = 0x03, data[4] = 0x04가
: 들어가는 거지요..^^;
//---------------------------------------------------------------------------
#include <iostream>
#include <cstdlib>
#include <cstring>
#pragma hdrstop
//---------------------------------------------------------------------------
using namespace std;
#pragma argsused
int main(int argc, char* argv[])
{
int n = 0x1234; // i, j는 for, while 등의 루프에서만 씁시다. 정수는 보통 n
char data[100];
itoa(n, data, 16);
// 호출 결과는 다음과 같습니다.
// data[0] = 0x31, data[1] = 0x32, data[3] = 0x33, data[4] = 0x34, data[5] = 0x00
cout.setf(ios::hex); // C++에서의 16진수 출력법 -> 암호같은 printf()보다 훨씬 직관적이죠.
cout << data << endl;
int len = strlen(data);
for (int i = 0; i < len; ++i) {
data[i] -= '0'; // '0'(0x30)을 빼면 원하는 값이 됩니다.
cout << (int)data[i] << endl;
}
return 0;
}
//---------------------------------------------------------------------------
결과는 물론
1234
1
2
3
4
: 김백일 님이 쓰신 글 :
: : 오전&오후 님이 쓰신 글 :
: : : 예를 들어서..스트링으로 들어온값을...16진수로 바꾸어서 데이타를
: : : 넣을려고 하거든요..
: : :
: : : "12f4'면
: : : unsigned char data[100];
: : : data[0] = 0x01;
: : : data[1] = 0x02;
: : : data[2] = 0x0f;
: : : ...
: : :
: : : 이런식으로 데이타를 눌려고 하거든요...
: : : 노가다로 하면 되는데..혹시..
: : : 좋은방법좀 있으면 추천좀부탁드립니다..
: : :
: : :
|