我想知道Java字节码和.NET字节码有什么区别吗?如果有任何差异,我应该采用 Java 字节码和 .Net 字节码的十六进制值吗?因为,十六进制与语言无关,是通用规范。
我们正在使用 j2me 和 Java 开发移动应用程序。在这里,我使用外部指纹读取器来读取/验证指纹。我们使用一个 Java API 来读取/验证指纹。
我捕获手指模板和原始图像字节。我将原始图像字节转换为十六进制形式并存储在单独的文本文件中。
这里我们使用一个转换工具(用.NET开发)将十六进制形式转换为图像。在该工具的帮助下,我们尝试从该文本文件中获取图像。但我们无法正确获取图像。
.NET 程序员说 Java 字节和 .NET 字节不同。Java字节范围是-128到127。但是.NET字节范围是0到255。所以有一个问题。
但我的假设是:十六进制独立于 Java 和 .net。这对两者来说都是共同的。因此,我计划将该字节代码转换为十六进制格式,而不是将字节代码存储在文本文件中。因此,我们的.NET转换工具会自动将此十六进制转换为图像。
我不知道我走的路是否正确?
提前我想感谢有关这个问题的任何答案和建议,
我正在开发一个 GPS 跟踪器模块(型号:m528),它的文档很少,所以我没有任何关于它发送的数据格式的论文,
我有自己的服务器,它监听一个特殊的端口并获取模块发送的数据包,
我知道接收到的数据包中经纬度的位置,每个数据包有4个字节,没有N、W、S、E指示符,
这些是我认为有帮助的例子,
以十六进制存储的纬度数据:03447535 纬度值:34.79225
以十六进制存储的经度数据:04830690 经度值:48.51150
任何帮助和建议将不胜感激,谢谢大家
如何将整数转换为 4 个字符的十六进制数。如果不够长,我需要额外的 0 填充。
所以 2 -> 0x0002, 18 -> 0x0012 等等
我正在使用 Java
我正在尝试将日期时间转换为十六进制并将其发送到查询字符串中的另一个页面,并且我正在尝试再次将十六进制转换为日期时间。我已经将日期时间转换为十六进制,如下所示
private string DateToHex(DateTime theDate)
{
string isoDate = theDate.ToString("yyyyMMddHHmmss");
string xDate = (long.Parse(isoDate)).ToString("x");
string resultString = string.Empty;
for (int i = 0; i < isoDate.Length - 1; i++)
{
int n = char.ConvertToUtf32(isoDate, i);
string hs = n.ToString("x");
resultString += hs;
}
return resultString;
}
Run Code Online (Sandbox Code Playgroud)
通过将日期时间转换为十六进制,我得到了这样的结果32303134303631313136353034,在另一个页面中我尝试将十六进制转换为日期时间,如下所示
private DateTime HexToDateTime(string hexDate)
{
int secondsAfterEpoch = Int32.Parse(hexDate, System.Globalization.NumberStyles.HexNumber);
DateTime epoch = new DateTime(1970, 1, 1);
DateTime myDateTime = epoch.AddSeconds(secondsAfterEpoch);
return myDateTime;
}
Run Code Online (Sandbox Code Playgroud)
我尝试过将十六进制转换为日期时间
string sDate = string.Empty;
for (int …Run Code Online (Sandbox Code Playgroud) 我有一个清单,例如['exa', 'mp', 'l', 'e']。
我需要使用每个元素来对其进行十六进制化。我想怎么做?首先,我想以某种方式获取每个元素,然后执行 hex(element)。我如何得到它?或者我可以对整个列表进行十六进制化?
提前致谢。
我想说我尝试过str(listname),但它只是输出"['exa', 'mp', 'l', 'e']"不符合我的期望。
我知道我们可以使用 bash 将十六进制转换为十进制
#!/bin/bash
echo "Type a hex number"
read hexNum
echo $(( 16#$hexNum ))
Run Code Online (Sandbox Code Playgroud)
但是当我用 运行它时hexNum=9b4bbba36e494bcd,它给了我-7256500063973061683即负值,这是 2 的补码。
我不想要它的 2 补码。我想要输出hexNum=9b4bbba36e494bcdas 11190244009736489933。如https://www.rapidtables.com/convert/number/hex-to-decimal.html?x=9b4bbba36e494bcd 所示
如何使用 bash 获得此输出?请帮忙!
我有一个像 a 这样的长十六进制字符串f713637d185e61e9bcea04487a86a501981096941416412bd9809f743e2d79790574f678fc8a01c684778de872da6cb4,我需要将它转换为像 a 一样的长 dec 字符串38028436380513374353265995855941660177945156565669892070998148016602400854965335529242835215373689843417022113410228。输入字符串可能更长。如何使用 Kotlin 实现它?
我在玩指针,我注意到一件奇怪的事情。
我有一个结构如下:
typedef struct list_element_struct {
uint32_t x;
uint32_t y;
uint32_t z;
struct list_element_struct *next;
}list_element;
Run Code Online (Sandbox Code Playgroud)
据我所知,unsigned int 的大小为 4 个字节,指针的大小为 8 个字节。这里也有 8 个字节对齐,所以这个结构的大小是 24 个字节。
我已经初始化了上述结构对象的列表,list_element els[5];并将其中的每条数据设置为 0memset(els,0,5*sizeof(list_element));
现在我正在尝试使用以下代码查看它们的内存位置:
printf("%p start location of els\n", &(els));
printf("%p start location of els->x\n", &(els->x));
printf("%p start location of els->y\n", &(els->y));
printf("%p start location of els->z\n", &(els->z));
printf("%p start location of els->next(pointer)\n", &(els->next));
printf("%p start location of els+1\n", &(els[1]));
Run Code Online (Sandbox Code Playgroud)
我打印出来的是:
0x7ffeeba4a970 start location of els
0x7ffeeba4a970 start location of …Run Code Online (Sandbox Code Playgroud) 为什么会在 /bin/bash 上发生这种情况:
$ printf '%b' '\x90'
?
$
Run Code Online (Sandbox Code Playgroud)
但这发生在 /bin/sh 上:
$ printf '%b' '\x90'
\x90
$
Run Code Online (Sandbox Code Playgroud)
它们之间的区别/bin/bash以及/bin/sh为什么首先解码十六进制和第二不能?
我今天在调试时遇到了一些奇怪的问题,我设法将其追溯到一开始我忽略的事情。
看一下这两个命令的输出:
root@test:~# printf '%X' 10 | xxd -r -p | xxd -p
root@test:~# printf '%X' 43 | xxd -r -p | xxd -p
2b
root@test:~#
Run Code Online (Sandbox Code Playgroud)
第一个 xxd 命令将十六进制转换为 ASCII。第二个将 ASCII 转换回十六进制。(43 十进制 = 2b 十六进制)。
不幸的是,它似乎是十六进制转换为ASCII并没有保留非打印字符。例如,原始十六进制“A”(十进制十进制 = A 十六进制),不知何故被xxd -r -p. 因此,当我执行逆操作时,我得到一个空结果。
我想做的是将一些数据输入到 minimodem 中。我需要通过位敲击有效地生成呼叫等待来电显示 (FSK)。我的 bash 脚本有正确的位,但如果我执行十六进制转储,则缺少不可打印的字符。不幸的是,minimodem 似乎只接受 ASCII 字符,我需要给它原始十六进制,但它似乎在转换中被吃掉了。是否有可能以某种方式保留这些字符?我不认为这是任何选择,所以想知道是否有更好的方法。