Iphone iOS转换十六进制值
如何将十六进制值转换成表情符号,我有一个如下字符串Iphone iOS转换十六进制值,iphone,objective-c,ios,ios4,Iphone,Objective C,Ios,Ios4,如何将十六进制值转换成表情符号,我有一个如下字符串 NSString *myVal = @"1F61E"; 如何转换此文本以将其显示为表情符号 我发现了这个价值 请让我知道,我真的被这个问题难住了 更新 NSString *utf8String1 = @"1F61E"; NSString *a = [self convert:utf8String1]; NSLog(@"%@ &&&&&&&&&&&&
NSString *myVal = @"1F61E";
如何转换此文本以将其显示为表情符号
我发现了这个价值
请让我知道,我真的被这个问题难住了
更新
NSString *utf8String1 = @"1F61E";
NSString *a = [self convert:utf8String1];
NSLog(@"%@ &&&&&&&&&&&&&&&&&&&&&",a);
-(NSString*)convert:(NSString*)decoded{
unichar unicodeValue = (unichar) strtol([decoded UTF8String], NULL, 16);
char buffer[2];
int len = 1;
if (unicodeValue > 127) {
buffer[0] = (unicodeValue >> 8) & (1 << 8) - 1;
buffer[1] = unicodeValue & (1 << 8) - 1;
len = 2;
} else {
buffer[0] = unicodeValue;
}
return [[NSString alloc] initWithBytes:buffer length:len encoding:NSUTF8StringEncoding];
}
NSString*utf8String1=@“1F61E”;
NSString*a=[自转换:utf8String1];
NSLog(@“%@&&&&&&&&&&&&&&&&&&&&&&&&&,a);
-(NSString*)转换:(NSString*)解码{
unichar unicodeValue=(unichar)strtol([解码的UTF8String],NULL,16);
字符缓冲区[2];
int len=1;
如果(贬值>127){
缓冲区[0]=(unicodeValue>>8)和(1您的第一步是将其转换为数值:
unichar unicodeValue = (unichar) strtol([input UTF8String], NULL, 16);
然后,按照本节的规则:
char缓冲区[2];
int len=1;
如果(贬值>127){
缓冲区[0]=(unicodeValue>>8)和(1您尝试编码的代码点不适合16位。因此您需要使用UTF-32编码:
NSScanner *scan = [[NSScanner alloc] initWithString:@"1F61E"];
unsigned int val;
[scan scanHexInt:&val];
char cc[4];
cc[3] = (val >> 0) & 0xFF;
cc[2] = (val >> 8) & 0xFF;
cc[1] = (val >> 16) & 0xFF;
cc[0] = (val >> 24) & 0xFF;
NSString *s = [[NSString alloc]
initWithBytes:cc
length:4
encoding:NSUTF32StringEncoding];
NSLog(@"[%@]", s);
检查这个答案,这样就可以准确地解释:嗨,谢谢你的回复。这个nsstring的结果会是表情图标吗?或者我还需要做些什么才能显示出来。请让我看看know@user198725878很抱歉,我没有设备来测试此功能,您必须自己尝试!当我尝试使用nslo打印返回nsstring值时g它只是将我显示为“(null)”请让我知道,当我尝试使用nslog打印返回nsstring值时,它只是将我显示为“(null)”请让我know@user198725878您是否可以在字符串中使用\u1F61E简单地将其附加为字符?这比strtol方法简单得多。感谢您的回复。如何将我的变量转换为这种格式0x00、0x01、0cf6、0x1e?请告诉我谢谢您的帮助,请您解释一下它是如何实现的works@user198725878当然!NSScanner
将十六进制值转换为4字节无符号整数、四个
和&0xFF
操作“剪切”将单个8位部分放入一个4字节的char
数组中,最后使用NSUTF32StringEncoding
标志从这四个字节构造一个字符串,该标志表示每个字符串字符编码为一个四字节的UNICODE码点。
NSScanner *scan = [[NSScanner alloc] initWithString:@"1F61E"];
unsigned int val;
[scan scanHexInt:&val];
char cc[4];
cc[3] = (val >> 0) & 0xFF;
cc[2] = (val >> 8) & 0xFF;
cc[1] = (val >> 16) & 0xFF;
cc[0] = (val >> 24) & 0xFF;
NSString *s = [[NSString alloc]
initWithBytes:cc
length:4
encoding:NSUTF32StringEncoding];
NSLog(@"[%@]", s);