[급합니다.] 16진수 변환.. 하는 함수..

leolo의 이미지

급 질문입니다.
char buf[3];
buf[0] = 0x30;
buf[1] = 0x30;
buf[2] = 0x42;

아래 값을 11로 변환하는 함수를 하나 만들어주세요..

swirlpotato의 이미지

왠지 -_-; 이런식의 질문은 아마 대답이 없을 듯 합니다..

익명 사용자의 이미지

int conv(char *str) { return 11; }

11로 변환.

myohan의 이미지

Anonymous wrote:
int conv(char *str) { return 11; }

11로 변환.

정말 심오한 코드 입니다 ^-^ :twisted:

---------------------------------------
blog : http://myohan.egloos.com

IsExist의 이미지

질문이 너무 어려워요

---------
간디가 말한 우리를 파괴시키는 7가지 요소

첫째, 노동 없는 부(富)/둘째, 양심 없는 쾌락
셋째, 인격 없는 지! 식/넷째, 윤리 없는 비지니스

이익추구를 위해서라면..

다섯째, 인성(人性)없는 과학
여섯째, 희생 없는 종교/일곱째, 신념 없는 정치

jachin의 이미지

자유게시판은 따로 있는데 이런곳에 글 남기시면 안되죠. ^^

글 이동해주세요. ^^

sangwoo의 이미지

buf[3]에 nul character를 추가한 후, strtol()을 사용하시면 되겠네요.
저장공간이 모자란다면 다른 버퍼에 복사하신 후 쓰시면 됩니다.

덧. 그리고 왠만하면 앞으로 [급합니다] 는 빼고 질문하세요.

----
Let's shut up and code.

myohan의 이미지

int conv (char *buf) {strcpy(buf, "11")}

---------------------------------------
blog : http://myohan.egloos.com

익명 사용자의 이미지

형왔다
형이 심심해서 굴다리에서 발로 짜봤다
담번부턴 이런질문 올리면 리플업ㅂ어

int h2d(char c)
{
    int r;
    switch ( c )
    {
        case : '0': r = 0;
        case : '1': return 1;
        case : '2': return 2;
        case : '3': return 3;
        case : '4': return 4;
        case : '5': return 5;
        case : '6': return 6;
        case : '7': return 7;
        case : '8': return 8;
        case : '9': return 9;
        case : 'A': case : 'a': return 10;
        case : 'B': case : 'b': return 11;
        case : 'C': case : 'c': return 12;
        case : 'D': case : 'd': return 13;
        case : 'E': case : 'e': return 14;
        case : 'F': case : 'f': return 15;
	}
	return 0;
}

long hex2int(char *s)
{
    int r = 0;
    while ( *s ) { r = r * 16 + h2d(*s); s++; }
    return r;
}

int i = hex2int("Beef");
feelpassion의 이미지

Anonymous wrote:
형왔다
형이 심심해서 굴다리에서 발로 짜봤다
담번부턴 이런질문 올리면 리플업ㅂ어


ㅎㅎㅎ

남으로 창을 내겠소.
밭이 한참갈이 괭이로 파고 호미론 김을 메지요.
구름이 꼬인다 갈리있소. 새들의 노래는 공으로 들으랴오.
강냉이가 익거든 와자셔도 좋소.
왜 사냐건 웃지요.

htna의 이미지

심심풀이로 해 봤읍니다.
singleton, Visotor 까지 붙여봤네요...
잘하면 Builder를 붙일수 있을거 같기도하고,
Iterator는 귀찮아서 stl의 것을 사용했네요...
더 해볼거 없을까요 ???

template<class T>
class Singleton
{
public:
	static T& GetInstance() {
		if(T::_singleton == NULL) {
			T::_singleton = new T();
			ASSERT(T::_singleton != NULL);
		}
		return *T::_singleton;
	}
};

class CTableHex2Uint
{
	friend class Singleton<CTableHex2Uint>;
	static CTableHex2Uint* _singleton;

	enum {
		_table_size = sizeof(TCHAR)*0xFF
	};
	UINT* _table_hex2uint;

	CTableHex2Uint() {
		_table_hex2uint = new UINT[_table_size];

		for(UINT i=0; i<_table_size; i++) {
			_table_hex2uint[i] = 0xFF;
		}

		_table_hex2uint[_T('0')] = 0x00;
		_table_hex2uint[_T('1')] = 0x01;
		_table_hex2uint[_T('2')] = 0x02;
		_table_hex2uint[_T('3')] = 0x03;
		_table_hex2uint[_T('4')] = 0x04;
		_table_hex2uint[_T('5')] = 0x05;
		_table_hex2uint[_T('6')] = 0x06;
		_table_hex2uint[_T('7')] = 0x07;
		_table_hex2uint[_T('8')] = 0x08;
		_table_hex2uint[_T('9')] = 0x09;
		_table_hex2uint[_T('a')] = 0x0A;
		_table_hex2uint[_T('b')] = 0x0B;
		_table_hex2uint[_T('c')] = 0x0C;
		_table_hex2uint[_T('d')] = 0x0D;
		_table_hex2uint[_T('e')] = 0x0E;
		_table_hex2uint[_T('f')] = 0x0F;
		_table_hex2uint[_T('A')] = 0x0A;
		_table_hex2uint[_T('B')] = 0x0B;
		_table_hex2uint[_T('C')] = 0x0C;
		_table_hex2uint[_T('D')] = 0x0D;
		_table_hex2uint[_T('E')] = 0x0E;
		_table_hex2uint[_T('F')] = 0x0F;
	}
	~CTableHex2Uint() {
		delete _table_hex2uint;
	}
public:
	UINT Hex2Int(TCHAR ch) const {
		if(_table_hex2uint[ch] == 0xFF) {
			ASSERT(FALSE);
			return 0;
		}
		return _table_hex2uint[ch];
	}
};

CTableHex2Uint* CTableHex2Uint::_singleton = NULL;

class CHexString
{
	struct CHexChar;
	struct CVisitor;
	struct CHexChar {
		TCHAR _ch;
		CHexChar() { }
		CHexChar(const CHexChar& value) : _ch(value._ch) { }
		CHexChar(TCHAR value) : _ch(value) { }
		CHexChar(LPCTSTR value) : _ch(*value) { }
		virtual void Accept(CVisitor* visitor) const {
			visitor->VisitCHexChar(this);
		}
	};

	struct CVisitor {
		UINT _value;
		CVisitor() : _value(0) {
		}
		virtual void VisitCHexChar(const CHexChar* hexchar) {
			_value = _value * 16 + Singleton<CTableHex2Uint>::GetInstance().Hex2Int(hexchar->_ch);
		}
	};

	std::list<CHexChar> _string;
public:
	CHexString(LPCTSTR szString) {
		for( ; *szString != NULL; szString ++) {
			_string.push_back(CHexChar(szString));
		}
	}

	UINT GetInt() const {
		CVisitor visitor;
		std::list<CHexChar>::const_iterator iter;
		for(iter=_string.begin(); iter!=_string.end(); iter++) {
			const CHexChar& element = *iter;
			element.Accept(&visitor);
		}
		return visitor._value;
	}

};

long hex2int(LPCTSTR strHex) 
{
	return CHexString(strHex).GetInt();
} 

int i = hex2int(_T("Beef")); 

WOW Wow!!!
Computer Science is no more about computers than astronomy is about telescopes.
-- E. W. Dijkstra

bass1ife의 이미지

디자인 패턴이라...

코드로 위장한 최고의 비난이군요. ㅡㅡb

젠투, 젠투, 그리고 젠투.

doldori의 이미지

그냥 sscanf를 써도 될 듯.

const char* p = "Beef";
int i;
sscanf(p, "%x", &i);
htna의 이미지

짧게 하는것으로 친다면..
이게 더 나을듯도 하네요..
하지만, 앞서 말씀드렸다시피 재미삼아. ^^;;

int i = strtol("Beef",NULL,16);

WOW Wow!!!
Computer Science is no more about computers than astronomy is about telescopes.
-- E. W. Dijkstra

xwizardx의 이미지

예나지금이나 모두들 냉정하네요..
아니 이 주제를 올린 사람의 잘못된 생각때문이겠지만..
모두 즐겁게 하루를 보내자구요

htna의 이미지

아마. '냉정' 이라면 저를두고 하시는 말씀이 아닌가 생각이 드네요.
변명거리에 불과하지만.
위의 질문을 올린 사람을 비난하거나 그런 의도는 없었습니다.
다만, 위의 것들을 '디자인패턴'을 이용해서 꾸며보면.
(머 효율성은 꽝이겠지만..)
나름대로 경험이 되지 않을까 생각했네요...
다른사람들 또한 여기에 여러가지 것들을 접목시키는것을 보면 재밌지 않을까 생각했습니다.
자신이 알고있다고 아는게 아니라.
사용할 줄 알아야 아는것이지 않습니깐...
단지 아는수준에서 함 사용을 해 보고자 하는 의도가 더 컸다는...
^^;;;

WOW Wow!!!
Computer Science is no more about computers than astronomy is about telescopes.
-- E. W. Dijkstra

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.