Solved

Copy Hex from String

Posted on 2004-03-22
5
702 Views
Last Modified: 2008-02-01
Hello

I have 6 Edit controls in which the user enters a hex value (for example the string "00" in edit 1 "e1" in edit 2 etc)

      UCHAR szDestMac[6] = {NULL}; //This is the varaible in which I want to store all my hex numbers

                //I get the text from the edit box as follows
                TCHAR m_szDestMAC[3];
      GetDlgItemText(IDC_EDIT_SRCMAC1, m_szDestMAC, sizeof(m_szDestMAC));
               
                //So now m_szDestMAC = "00" and I want to copy this as a hex number into the first byte of my unicode array, szDestMac[0].

                //I tried both the following
      swprintf((TCHAR*)&szDestMac[0], _T("%s"), m_szDestMAC);
      //memcpy(&szDestMac[0], m_szDestMAC, 1);

                //But the TRACE statment returns as "Got Source MAC from user: 30"
      TRACE(_T("Got Source MAC from user: %02x\n"), szDestMac[0]);

Anyone know why szDestMac[0] contains the value 30 instead of what was typed in the edit control "00" and how to resolve the problem

Regards
 
0
Comment
Question by:auk_ie
  • 2
  • 2
5 Comments
 
LVL 23

Assisted Solution

by:chensu
chensu earned 50 total points
Comment Utility
0x30 is the ASCII value of character '0'. If you want to print out the character,

TRACE(_T("Got Source MAC from user: %c\n"), szDestMac[0]);
0
 
LVL 86

Assisted Solution

by:jkr
jkr earned 50 total points
Comment Utility
Try

swprintf((TCHAR*)&szDestMac[0], _T("%S"), m_szDestMAC);  // note the capital 'S'

Are you sure you don't want to use sth. like

UCHAR szDestMac[7] = {0,0,0,0,0,0,0};

<loop from 0 to 6>
    TCHAR m_szDestMAC[3];
    GetDlgItemText(IDC_EDIT_SRCMAC1, m_szDestMAC, sizeof(m_szDestMAC));
    wchar_t wszTmp  [3];
    wsprintf ( wszTmp, "%S", m_szDestMac);
    wcscat ( szDestMac, wszTmp);
<end loop>





0
 
LVL 23

Expert Comment

by:brettmjohnson
Comment Utility
swprintf() is not what you want you use as this point.
You want to use strtol() instead:

szDestMac[0] = (UCHAR) strtol(m_szDestMAC);


0
 
LVL 23

Expert Comment

by:chensu
Comment Utility
The code should be like this,

TCHAR szDestMac[6] = { 0 };

TCHAR m_szDestMAC[3];
GetDlgItemText(IDC_EDIT_SRCMAC1, m_szDestMAC, sizeof(m_szDestMAC) / sizeof(TCHAR));
               
_stprintf(szDestMac, _T("%s"), m_szDestMAC);

TRACE(_T("Got Source MAC from user: %c\n"), szDestMac[0]);

Note that the MFC documentation on CWnd::GetDlgItemText() is wrong.

"nMaxCount
Specifies the maximum length (in bytes) of the string to be copied to lpStr. If the string is longer than nMaxCount, it is truncated."

It should be in characters rather than bytes.
0
 
LVL 23

Accepted Solution

by:
brettmjohnson earned 400 total points
Comment Utility
> szDestMac[0] = (UCHAR) strtol(m_szDestMAC);

Oops, my bad.  that should be:

szDestMac[0] = (UCHAR) strtol(m_szDestMAC, NULL, 16);

0

Featured Post

IT, Stop Being Called Into Every Meeting

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

Join & Write a Comment

Often, when implementing a feature, you won't know how certain events should be handled at the point where they occur and you'd rather defer to the user of your function or class. For example, a XML parser will extract a tag from the source code, wh…
Introduction This article is the first in a series of articles about the C/C++ Visual Studio Express debugger.  It provides a quick start guide in using the debugger. Part 2 focuses on additional topics in breakpoints.  Lastly, Part 3 focuses on th…
The goal of the video will be to teach the user the difference and consequence of passing data by value vs passing data by reference in C++. An example of passing data by value as well as an example of passing data by reference will be be given. Bot…
The viewer will learn how to use the return statement in functions in C++. The video will also teach the user how to pass data to a function and have the function return data back for further processing.

728 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

13 Experts available now in Live!

Get 1:1 Help Now