中文字符为ASCII或十六进制

时间:2013-06-26 05:10:20

标签: ios objective-c nsstring hex ascii

我努力将中文单词/字符转换为ascii或hexadecimal,而且到目前为止我所得到的所有值都不是我想要得到的。

转换示例是手到十六进制是1534b。

到目前为止我遵循的方法如下,我得到了各种结果,但我正在寻找的那个,

如果你能帮我解决这个问题,我真的很感激,

谢谢, 麦克

 - (NSString *) stringToHex:(NSString *)str{
NSUInteger len = [str length];
unichar *chars = malloc(len * sizeof(unichar));
[str getCharacters:chars];
NSMutableString *hexString = [[NSMutableString alloc] init];
for(NSUInteger i = 0; i < len; i++ )
{        
    [hexString appendFormat:@"%02x", chars[i]]; //EDITED PER COMMENT BELOW
}
free(chars);
return hexString;}

const char *cString = [@"手" cStringUsingEncoding:NSASCIIStringEncoding];

下面是Java for Android中的类似代码,也许它有帮助

    public boolean sendText(INotifiableManager manager, String text) {
       final int codeOffset = 0xf100;

       for (char c : text.toCharArray()) {


       int code = (int)c+codeOffset;


       if (! mConnection.getBoolean(manager, "SendKey", Integer.toString(code))) {


       }

1 个答案:

答案 0 :(得分:1)

您的Java代码就是这样做的:

获取字符串的每个16位字符并向其添加0xf100。

如果您在上面的Objective-C代码中执行相同的操作,您将获得所需的结果。