如何将字符串编码为 8 位 ASCII 字符?
How do encode a string as 8-bit ASCII characters?
我正在尝试连接到另一个开发人员创建的服务器。他已经不在了,所以我试图解释他的意思。
我正在创建一个要发送到服务器的 UDP 消息,在消息的必填字段之一的描述中,他有这个:
A name for the Client, encoded using 8-bit ASCII characters
例如,如果我想使用名称 "MyName",结果将是 (char, dec, hex):
| M | 77 | 0x4D |
| y | 121 | 0x79 |
| N | 78 | 0x4E |
| a | 97 | 0x61 |
| m | 109 | 0x6D |
| e | 101 | 0x65 |
我对字段中应该包含什么感到有点困惑。应该是
0771217897109101
或者应该是
0x4D0x790x4E0x610x6D0x65
还是应该完全不同?
仅供参考,他使用 C++ 编写服务器,而我正在使用 Java。我知道这没有什么区别,我只是想添加一点信息。
您可以在 Java 中执行此操作:
String name = ...; // "MyName", etc
byte[] arr = name.getBytes(StandardCharsets.US_ASCII);
// append arr to UDP message as needed...
没有8bitASCII这样的东西。 ASCII码只有7bit。有效 ASCII 范围 (0-127) 之外的字符值将转换为 ?
(十六进制 0x3F)。 128-255 范围内的字符通常称为 ANSI 或扩展 ASCII。这些是特定于语言环境的字符。如果服务器实际上需要 8bit 字符,那么它不需要 ASCII,而是需要 ANSI,这会在使用非 ASCII 字符时导致语言冲突。大多数现代服务器通常期望 UTF-8,其中允许 8 位字符数据。您将不得不参考此服务器的文档或源代码以弄清楚它实际需要什么。听起来它可能实际上期望 7 位 ASCII 字符被简单地扩展到 8 位字节(因此不允许字符 > 127)。
我正在尝试连接到另一个开发人员创建的服务器。他已经不在了,所以我试图解释他的意思。
我正在创建一个要发送到服务器的 UDP 消息,在消息的必填字段之一的描述中,他有这个:
A name for the Client, encoded using 8-bit ASCII characters
例如,如果我想使用名称 "MyName",结果将是 (char, dec, hex):
| M | 77 | 0x4D |
| y | 121 | 0x79 |
| N | 78 | 0x4E |
| a | 97 | 0x61 |
| m | 109 | 0x6D |
| e | 101 | 0x65 |
我对字段中应该包含什么感到有点困惑。应该是
0771217897109101
或者应该是
0x4D0x790x4E0x610x6D0x65
还是应该完全不同?
仅供参考,他使用 C++ 编写服务器,而我正在使用 Java。我知道这没有什么区别,我只是想添加一点信息。
您可以在 Java 中执行此操作:
String name = ...; // "MyName", etc
byte[] arr = name.getBytes(StandardCharsets.US_ASCII);
// append arr to UDP message as needed...
没有8bitASCII这样的东西。 ASCII码只有7bit。有效 ASCII 范围 (0-127) 之外的字符值将转换为 ?
(十六进制 0x3F)。 128-255 范围内的字符通常称为 ANSI 或扩展 ASCII。这些是特定于语言环境的字符。如果服务器实际上需要 8bit 字符,那么它不需要 ASCII,而是需要 ANSI,这会在使用非 ASCII 字符时导致语言冲突。大多数现代服务器通常期望 UTF-8,其中允许 8 位字符数据。您将不得不参考此服务器的文档或源代码以弄清楚它实际需要什么。听起来它可能实际上期望 7 位 ASCII 字符被简单地扩展到 8 位字节(因此不允许字符 > 127)。