如何将字符串编码为 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)。