java - 如何从字节 [] 打印十六进制?
问题描述
我的目标是遵循 RFC6455 [第 8 页]
The server would then take the SHA-1 hash of this,
giving the value 0xb3 0x7a 0x4f 0x2c 0xc0 0x62 0x4f 0x16 0x90 0xf6
0x46 0x06 0xcf 0x38 0x59 0x45 0xb2 0xbe 0xc4 0xea.
我假设0xb3
等于 179。
这是我用来打印字节 [] 的代码行。记录器是 sl4fj。
private static final Logger LOGGER = LoggerFactory.getLogger(WebSocketWorkerThread.class);
public void onOpen() {
String GUID = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11";
byte[] SHA_1_hash_value = MessageDigest.getInstance("SHA-1").digest(
("dGhlIHNhbXBsZSBub25jZQ==" + GUID).getBytes()
);
StringBuilder sb = new StringBuilder();
for (byte b : SHA_1_hash_value) {
sb.append(String.format("%02X ", b));
}
}
我的预期结果:
0xb3 0x7a 0x4f 0x2c 0xc0 0x62 0x4f 0x16 0x90 0xf6
0x46 0x06 0xcf 0x38 0x59 0x45 0xb2 0xbe 0xc4 0xea
实际结果:
64 3A 23 A1 A9 CE 6D 23 B2 71 B8 D5 45 CE A8 5F 25 CD 45 1E
解决方案
private static final Logger LOGGER = LoggerFactory.getLogger(WebSocketWorkerThread.class);
public void onOpen() {
String GUID = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11";
byte[] SHA_1_hash_value = MessageDigest.getInstance("SHA-1").digest(
("dGhlIHNhbXBsZSBub25jZQ==" + GUID).getBytes()
);
StringBuilder sb = new StringBuilder();
for (byte b : SHA_1_hash_value) {
sb.append("0x" + String.format("%02X ", b).toLowerCase());
}
}
推荐阅读
- javascript - forEach 索引从 1 而不是 0 计数?
- lua - 如何处理 lua_resume 给出的返回号?
- java - 文本视图在 CardView 中被切断?
- wordpress - 分类值保存在哪里?
- javascript - 异步滚动事件问题。纯JS
- swift - 滚动时从文档目录加载的集合视图图像滞后
- sql - BigQuery 在过程中保存 OPTIONS(strict_mode=FALSE)
- python - pytube HTTP 未找到
- awk - 在applescript中使用awk时出错,但在终端中有效
- excel - 复制每个单元格后循环遍历单元格范围打印一张工作表