java - 字符串字节值的变化
问题描述
如果系统从 32 位更改为 64 位,字符串的字节值会改变吗?
假设我有一个字符串,我想要那个字符串的字节值。我想知道 Windows 32 位和 Windows 64 位系统中的字节值是否保持不变?
解决方案
我必须假设“字符串的字节值”是指通过使用给定编码对字符串进行编码而生成的字节值。
如果是这样,那么从 32 位架构切换到 64 位架构不会改变结果。
但是,如果您只是使用String.getBytes()
不带任何参数来获取,byte[]
则返回值将取决于系统默认编码。虽然这在具有相同设置的同一操作系统的 32 位和 64 位版本之间不太可能有所不同,但系统默认编码可能会根据许多其他参数(例如操作系统中配置的 UI 语言)而有所不同,因此它始终是通过始终指定如下特定编码来避免此问题的好主意:
byte[] bytes = myString.getBytes(StandardCharsets.UTF_8);
byte[]
如果在相同的myString
值上调用此调用,则无论您碰巧在什么操作系统、体系结构或区域设置上运行它,该调用将始终产生相同的结果。
推荐阅读
- inheritance - 如何在 Flutter 中重用非 Widget 类?
- installation - 安装 .Net Core SDK 2.2 进行开发的最佳方式是什么
- google-chrome-extension - 如何修复:尝试在 chrome 扩展的选项部分中为 local.storage 捕获数据并在其他地方使用?
- codeigniter - 使用 CI 实例的 CI 加载库函数
- java - 每当我使用改造从网络访问数据时,它都可以正常工作,但第二次使用改造无法通过网络找到数据
- google-oauth - 如何避免 Android 上的 Google OAuth 同意屏幕
- sql-server - SQLSERVER 用于备份数据并将值更改为随机数据的脚本
- bash - 在 XML 文件中查找和有条件地编辑文本
- python - Python:有没有比使用自动更正进行拼写更正更快的方法?
- asp.net - Docker 容器中的 NuGet 库在哪里?