0

我正在努力将中文单词/字符转换为 ascii 或十六进制,而我到现在为止得到的所有值都不是我想得到的。

转换的示例是单词手到十六进制是 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))) {


       }
4

1 回答 1

1

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

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

如果你在上面的 Objective-C 代码中做同样的事情,你会得到你想要的结果。

于 2013-06-26T05:34:29.327 回答