首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QChar存储乘号'ב的负Latin1代码

QChar存储乘号'ב的负Latin1代码
EN

Stack Overflow用户
提问于 2015-06-24 02:25:49
回答 2查看 152关注 0票数 0

我想要获得乘号×的Latin1代码,但是当我检查QChar内部的值时,它的值是-41'×'

我的代码:

代码语言:javascript
复制
QString data = "×";
QChar m = data.at(0);
unsigned short ascii = (unsigned short)m.toLatin1();

当我调试时,在第二行我看到QChar的值是-41'×'

我更改了代码:

代码语言:javascript
复制
unsigned int ascii = c.unicode();

但是我得到的值是215,我希望是158。

EN

回答 2

Stack Overflow用户

发布于 2015-06-24 03:07:08

当您在unix系统上检查man ascii时,可以看到乘号×不是ascii符号。

它的值取决于编码,有关它的UTF表示,请参见here。例如,在UTF-8上,它的值为0xC397,为两个字节。正如在unicode页面中提到的,我链接的215是以UTF-16编码表示该字符的十进制值,这是c.unicode()返回的结果。我不知道你为什么要期待158。

但是有一个ascii乘号,它是*

票数 4
EN

Stack Overflow用户

发布于 2015-06-25 02:36:33

如果检查Latin1 code table,很明显×确实被编码为215或-41。Qt会给你正确的结果。

你的错误是:

  1. 假设Latin1等价于ASCII码。Latin1只包含ASCII码,但它是超集:它定义的代码比ASCII码多2倍。
  2. 假设×用ASCII码表示。不是这样的。

我不知道你是从哪里得到Latin1编码的×应该是158的。当然,它不是来自Latin1代码表!顺便说一句,×的Latin1和UTF-8编码是相同的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31010637

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档