扫码关注官方订阅号
char并不是2字节.char并不是2字节.char并不是2字节.
char的实现是UTF-16, UTF-16是一种可变长编码. 那就意味着, 有一部分编码, 需要两个2字节来表示一个字符. 问题就变得很好理解. 无非就是UTF16到UTF32的转换, UTF32刚好是一个4字节.
PS: 斜着的部分是我猜的, 我不是Java程序员.
转int高位会扩展为符号位,0x10会变成0x00000010,0x8000会变成0xffff8000转换跟编码无关,无论啥编码,都是如上转换。
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
char并不是2字节.
char并不是2字节.
char并不是2字节.
char的实现是UTF-16, UTF-16是一种可变长编码. 那就意味着, 有一部分编码, 需要两个2字节来表示一个字符.
问题就变得很好理解. 无非就是UTF16到UTF32的转换, UTF32刚好是一个4字节.
PS: 斜着的部分是我猜的, 我不是Java程序员.
转int高位会扩展为符号位,0x10会变成0x00000010,0x8000会变成0xffff8000
转换跟编码无关,无论啥编码,都是如上转换。