Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
Solved

# String to Hex Unicode (JIS)

Posted on 2009-04-10
Medium Priority
875 Views
I am looking for a solution to convert a double byte string into its equivalent hex unicode.

Input : "D O U B L E"  //(Japanese or English String)

Output : 0x65ed, 0x8466, 0x82a6, 0x9bf5, 0x6893  //(like this)

0
Question by:sandip132
[X]
###### Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

• Help others & share knowledge
• Earn cash & points
• Learn & ask questions
• 3
• 2
• 2
• +1

LVL 3

Expert Comment

ID: 24115784
basically,

while(input[i] != EOS){

cout <<  hex << (int)input[i] << " ";

}
0

LVL 3

Expert Comment

ID: 24115786
oops, throw a i++ at the end
0

LVL 86

Expert Comment

ID: 24116132
That would output the decimal integer values. You'd rather make that
``````#include <iostream>
#include <iomanip>
#include <string>
using namespace std;

int main () {

// for testing purposes
wstring str = L"D O U B L E";
// usially, you'd use
// getline(wcin,str);

for (string::iterator i = str.begin(); i != str.end(); ++i) {

wcout << setbase(ios_base::hex) << L"0x" << (int) *i << L" ";
}

wcout << endl;

return 0;
}
``````
0

LVL 17

Expert Comment

ID: 24122625
this code converts ascii string to equivalent hex
change it to unicode yourself :D
regards
``````CString hex = "";
int length = m_hex.GetLength();
for(int i=0;i<length;i++)
hex += "\\x" + ToHex((BYTE)m_hex[i] + m_add);
``````
0

LVL 12

Author Comment

ID: 24127698
@csaint00:
No luck!

@jkr
it gives error :
Error      40      error C2440: 'initializing' : cannot convert from 'std::_String_iterator<_Elem,_Traits,_Alloc>' to 'std::_String_iterator<_Elem,_Traits,_Alloc>'

Error      41      error C2678: binary '!=' : no operator found which takes a left-hand operand of type 'std::_String_iterator<_Elem,_Traits,_Alloc>' (or there is no acceptable conversion)

@CSecurity:
CString is not supported!

As I am very new to c++, I guess something missing in code!
0

LVL 86

Accepted Solution

jkr earned 2000 total points
ID: 24131015
Sorry, my fault, that sampel should of course use wide string iterators. Try teh following:
``````#include <iostream>
#include <iomanip>
#include <string>
using namespace std;

int main () {

// for testing purposes
wstring str = L"D O U B L E";
// usially, you'd use
// getline(wcin,str);

for (wstring::iterator i = str.begin(); i != str.end(); ++i) { // 'wstring' instead of 'string' in this line

wcout << setbase(ios_base::hex) << L"0x" << (int) *i << L" ";
}

wcout << endl;

return 0;
}
``````
0

LVL 12

Author Comment

ID: 24134618
Perfect!!!

Thanks jkr.

I made some changes in your code to get a actual Hex string using the decimal values.

One small query: How can I copy my std::string myString into wstring str? (I will open a new question if the solution is more complex.)

I tried :
wchar_t str[1024];
lstrcpyW(str,myString);  // This won't work.
lstrcpyW(str,(wchar_t*)myString); // Same here.

Thanks again for your help.

@All
Below code works fine to convert chars String to Hex Unicode (JIS).
``````#include "stdafx.h"
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;

int main () {

// for testing purposes
wstring str = L"D O U B L E";  //Use Japanese chars
// usially, you'd use
// getline(wcin,str);
char outStr[100];
for (wstring::iterator i = str.begin(); i != str.end(); ++i) { // 'wstring' instead of 'string' in this line

//wcout << setbase(ios_base::hex) << L"0x" << (int) *i << L" ";
sprintf(outStr,"0x%x",(int) *i);
wcout << setbase(ios_base::hex) << outStr << L" ";
}

wcout << endl;

return 0;
}
``````
0

LVL 12

Author Closing Comment

ID: 31568887
Thanks jkr. :)
0

## Featured Post

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

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â€¦
Included as part of the C++ Standard Template Library (STL) is a collection of generic containers. Each of these containers serves a different purpose and has different pros and cons. It is often difficult to decide which container to use and â€¦
The goal of the video will be to teach the user the concept of local variables and scope. An example of a locally defined variable will be given as well as an explanation of what scope is in C++. The local variable and concept of scope will be relatâ€¦
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â€¦
###### Suggested Courses
Course of the Month5 days, 10 hours left to enroll

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

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