PTR ptr(new st);
This is a memory leak in C++, because new st allocates memory and there is no way to release it. 
UINT count = _ttoi(str);
...
sprintf_s(string, 10, "%04d", count);
This is converting string to integer, then converts integer back to string. It doesn't seem to have a real purpose.
For example, "1234" is converted to 1234, and back to "1234". But "A123" is not a valid number so it is converted to 0, then converted to "0000". So this method fails. You can just work with the original string.
It seems this function tries to fit 2 integers in to 1 byte. This can be done as long as each value is less than 16 or 0xF (I don't know what purpose this might have) It can be fixed as follows:
void StrToByte2(const wchar_t* str, BYTE *dest)
{
    int len = wcslen(str);
    if(len != 4)
        return; //handle error
    char buf[4] = { 0 };
    for(int i = 0; i < 4; ++i)
        if(str[i] >= L'0' && str[i] <= L'9')
            buf[i] = (BYTE)(str[i] - L'0');
    dest[0] = (buf[0] << 4) + buf[1];
    dest[1] = (buf[2] << 4) + buf[3];
}
CStringW Byte2_To_Str(BYTE *dest)
{
    CStringW str;
    str.AppendFormat(L"%X", 0xF & (dest[0] >> 4));
    str.AppendFormat(L"%X", 0xF & (dest[0]));
    str.AppendFormat(L"%X", 0xF & (dest[1] >> 4));
    str.AppendFormat(L"%X", 0xF & (dest[1]));
    return str;
}
int main()
{
    BYTE dest[2] = { 0 };
    StrToByte2(L"1234", dest);
    OutputDebugStringW(Byte2_To_Str(dest));
    OutputDebugStringW(L"\n");
    return 0;
}
If the string is hexadecimal, you can use sscanf to convert each pair of character to bytes.
Basically, "1234" changes to 12 34
"A123" changes to A1 23
bool hexstring_to_bytes(const wchar_t* str, BYTE *dest, int dest_size = 2)
{
    int len = wcslen(str);
    if((len / 2) > dest_size)
    {
        //error
        return false;
    }
    for(int i = 0; i < len / 2; i++)
    {
        int v;
        if(swscanf_s(str + i * 2, L"%2x", &v) != 1) 
            break;
        dest[i] = (unsigned char)v;
    }
    return true;
}
CStringW bytes_to_hexstring(const BYTE* bytes, int byte_size = 2)
{
    CString str;
    for(int i = 0; i < byte_size; i++)
        str.AppendFormat(L"%02X ", bytes[i] & 0xFF);
    return str;
}
int main()
{
    CStringW str;
    CStringW new_string;
    BYTE dest[2] = { 0 };
    str = L"1234";
    hexstring_to_bytes(str, dest);
    new_string = bytes_to_hexstring(dest);
    OutputDebugString(new_string);
    OutputDebugString(L"\n");
    str = L"A123";
    hexstring_to_bytes(str, dest);
    new_string = bytes_to_hexstring(dest);
    OutputDebugStringW(new_string);
    OutputDebugStringW(L"\n");
    return 0;
}