Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java字符串中的特殊字符_Java_Arrays_String_Char_Byte - Fatal编程技术网

java字符串中的特殊字符

java字符串中的特殊字符,java,arrays,string,char,byte,Java,Arrays,String,Char,Byte,我正在寻找在java字符串中插入特殊的1字节字符的解决方案,如0xFE,0xFF(>127) 我需要使用字符串而不是字节数组,因为类的方法只需要字符串类型 我在字符串={0x07 0xAA 0x03 FF}中需要什么。是的,它是用于设备控制的特殊字符 我尝试使用字符串constructur作为: byte[] arr = {0x07, (byte) 0xAA, 0x03, (byte) FF}; String s = new String(arr, "UTF-8"); //utf-8用于1字

我正在寻找在java字符串中插入特殊的1字节字符的解决方案,如
0xFE,0xFF(>127)

我需要使用字符串而不是字节数组,因为类的方法只需要字符串类型

我在
字符串={0x07 0xAA 0x03 FF}
中需要什么。是的,它是用于设备控制的特殊字符

我尝试使用字符串constructur作为:

byte[] arr = {0x07, (byte) 0xAA, 0x03, (byte) FF};
String s = new String(arr, "UTF-8"); 
//utf-8用于1字节字符,我也尝试了ascII,但结果是一样的

数组中所有字符的最大值都是char的127(dec),但在它给出奇怪的结果后,比如字符串中增加了1或2个字节,当然这是因为字节类型的最大值是127。但是如何解决这个问题呢??我需要帮助


我如何理解我不能将char[]添加到字符串构造函数中

您的问题有一部分是不正确的。UTF-8仅将
[32126]
范围内的可打印ASCII字符存储为单个字节(超出此范围,每个字符有2个甚至3个字节),即使编码长度通常为256字节。由于在Java中,默认情况下所有字符串都自动存储并打印为UTF-8,因此打印时它们将保留超过1字节

您需要的是一种编码,在访问字节时将所有
[1256]
第一个字节存储为单个字节。例如,使用当前代码:

byte[] arr = {0x07, (byte) 0xAA, 0x03, (byte) 0xFF};
String s = new String(arr, "UTF-8");

System.out.println(s.getBytes().length); // This prints 8
System.out.println(s.getBytes("UTF-8").length); // This prints 8 as well (since the default is UTF-8)
System.out.println(s.getBytes("Windows-1252").length); // This prints 4


(也称为)或是两种非常著名的编码。

“我如何理解我不能将char[]添加到字符串构造函数”你是什么意思?
String
似乎有一个。这就是你要找的吗?使用Unicode转义:
String s=“\u0007\u00AA\u0003\u00FF”是的,我的意思是我如何知道字符类型需要2个字节,对吗?所以,char 0xFF将被添加到字符串中,比如0x00 0xFF。。但我需要一个字节,在你们的帮助下,我找到了解决方案!问题是字符集!!!需要ISO-8859-1char[]arr={0x07,0xAA,0x03,0xFF};标准写入字符串(新字符串(arr),“ISO-8859-1”);portMonitor IRP_MJ_写入序列0的结果成功长度4:07 AA 03FF@Kost很高兴我能帮忙。:)