gpt4 book ai didi

java - 将 C/C++ unsigned char 转换为 JAVA 时出现问题

转载 作者:行者123 更新时间:2023-11-29 04:01:01 24 4
gpt4 key购买 nike

unsigned char 的问题。我正在读取包含 ASCII/扩展 ASCII 数据的 PPM 图像文件。

对于一个字符,例如。 '†' ,在 JAVA 中,将其读取为 char 并类型转换为 int 后,其值为 8224。在 C/C++ 中,将其作为 unsigned char 读取并类型转换为 int 后,其值为 160。

我如何在 JAVA 中读取以获得值 160?

下面的C++

unsigned char ch1 ='†';  
char ch2 = '†';

cout << (int) ch1 << "\n"; // prints 160
cout << (int) ch2 << "\n"; // prints -96

在 Java 中,

char ch1 = '^';  
char ch2 = '†';
System.out.println (" value : " + (int) ch1); // prints 94
System.out.println (" value :" + (byte) ch1); // prints 94

System.out.println (" value : " + (int) ch2); // prints 8224
System.out.println (" value :" + (byte) ch2); // prints 32

以下是一些异常(exception)情况8224 †8226 •8800≠8482™8710 ∆8211 –8221”8216‘9674 ◊8260 ⁄8249 ‹8249 ‹8734∞8747 ∫8364 欧元8730 √8804≤

以下是一些不错的94 ^102楼112页119 瓦126~196°122 z197 埃197埃

感谢任何帮助

最佳答案

在 C++ 中,您在某些特定编码中使用“窄”字符,恰好将字符“†”定义为 160。在其他编码中,160 可能意味着其他含义,并且字符“†”可能完全缺失。

在 Java 中,您总是在处理 Unicode。 8660 = 0x2020 = U+2020“ Dagger ”。

要获得“160”,您需要将字符串转换为您在 C++ 中使用的相同编码。参见 String.getBytes(charset) .

关于java - 将 C/C++ unsigned char 转换为 JAVA 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3630979/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com