我知道为短数据类型分配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);”仅接受短数据类型
答案 0 :(得分:1)
我认为你误解了十六进制和十进制的含义。
十进制是基数10中的数字表示 - 你知道,从0到9计数。这就是我们习惯的系统。
十六进制是基数为16的数字表示 - 从0到F。
实际上,您担心的是157与0x9D
,when it actually is不同。
十六进制更像是一种形式表示,它不会改变数字的基础值。所以,你应该可以看到157传入你的方法。
如果您真的想再次将其视为0x9d
,可以在String#format
内使用System.out.println
:
System.out.println("\ninside: " + String.format("%x", moduleId));