Does anyone have a PeopleCode algorithm for hex encoding strings? I'm working on an escapeJSON
function and would like to come up with a good way to convert unsafe characters to unicode. Here is what I've come up with, but I would like to hear other ideas:
Local JavaObject &int = GetJavaClass("java.lang.Integer");
Local string &unicode;
REM ** I hard coded the source character to A for this example;
&unicode = "\u" | Right("0000" | &int.toHexString(Code("A")), 4);
This converts "A" to \u0041. The actual Hex part is
GetJavaClass("java.lang.Integer").toHexString(Code("A"));
I don't think there is anything wrong with my solution. I am just wondering if I overlooked some PeopleCode function for displaying numbers in Hex.
8 comments:
Have you considered using JSON.simple?
http://code.google.com/p/json-simple/
@Bauke, JSON.simple is my favorite JSON library. Yes, I have considered, and do use it. I have another blog post in the works about that. I wanted to post it last night, but didn't quite get it finished.
have you ever considered PeopleSoft PET ?
there are several algorithm like PSHexEncode and PSHexDecode ...
Yes, actually, I am familiar with PET. I use it Here. I'll have to look into that for this case.
It's probably more work than what you did, but you could do something like this natively in PeopleCode without using a Java Object:
Function hexVal(&iH As integer) Returns string
If &iH <= 9 Then
Return String(&iH);
Else
Return String(Char(Mod(&iH, 9) + 64));
End-If;
End-Function;
Function toHex(&iV As integer) Returns string
Local integer &iH = Mod(&iV, 16);
Local string &sResult = "";
If &iV - &iH = 0 Then
&sResult = hexVal(&iH);
Else
&sResult = toHex(Int((&iV - &iH) / 16)) | hexVal(&iH);
End-If;
Return &sResult;
End-Function;
&sHexValue = hexVal(Code("A"));
Not super fancy, but it works. I snagged the algorithm from Wikipedia and converted it to PeopleCode.
@jarodmerle, Well done. Thank you.
You bet, your blog is great, so I figured it was about time I contribute even something of minimal value rather than being a total freeloader :). I have to respect fellow JJM's after all.
@jarodmerle, :)
Post a Comment