为短数据类型分配十六进制值

时间:2014-04-03 03:57:38

标签: java

我知道为短数据类型分配0x9d会起作用。但是当我打印出来时,它会显示157.它应该保留为0x9d,因为我计划将该数据传递给只接受短数据类型的库,例如应该是0x9d。

这是我的代码中我得到错误的部分。

short module_id = (short) 0x9d; // defined in system.txt
System.out.print("hello: " + String.format("%x", module_id));
roamerLocator.receiveMsg(module_id);
}

protected void receiveMsg(short moduleId) {

try {
System.out.println("\ninside: " + moduleId);
GctMsg gctMsg = GctLib.receive(moduleId);

这是我的ss7配置。 ss7配置中定义的参数应该是接受0x9d而不是十进制,即157.并且“GctMsg gctMsg = GctLib.receive(moduleId);”仅接受短数据类型

1 个答案:

答案 0 :(得分:1)

我认为你误解了十六进制和十进制的含义。

十进制是基数10中的数字表示 - 你知道,从0到9计数。这就是我们习惯的系统。

十六进制是基数为16的数字表示 - 从0到F。

实际上,您担心的是157与0x9Dwhen it actually is不同。

十六进制更像是一种形式表示,它不会改变数字的基础值。所以,你应该可以看到157传入你的方法。

如果您真的想再次将其视为0x9d,可以在String#format内使用System.out.println

System.out.println("\ninside: " + String.format("%x", moduleId));