将0x45 0x52 0x52 0x2D 0x31 0x0D 0X0A 转换成ASCII码
时间: 2024-02-11 14:46:35 浏览: 30
0x45 0x52 0x52 0x2D 0x31 0x0D 0X0A 转换成ASCII码后为 "ERR-1\r\n"。其中,0x45 对应的 ASCII 码为 E,0x52 对应的 ASCII 码为 R,以此类推。0x0D 对应的 ASCII 码为回车符(Carriage Return),0x0A 对应的 ASCII 码为换行符(Line Feed)。
相关问题
汉字的ascii码范围
C++中并没有专门用于表示汉字的ASCII码范围,因为ASCII码只包含了128个字符,无法表示汉字。在C++中,通常使用Unicode编码来表示汉字,Unicode编码是一种全球通用的字符编码标准,它包含了世界上几乎所有的字符,包括汉字。
在Unicode编码中,汉字的编码范围是0x4E00到0x9FA5,也就是说,如果你想在C++中表示汉字,可以使用Unicode编码,并使用16进制表示汉字的编码。例如,表示汉字“中”的Unicode编码是0x4E2D。
需要注意的是,在C++中,字符类型char只能表示ASCII码范围内的字符,如果要表示Unicode编码的字符,需要使用wchar_t类型。同时,为了支持Unicode编码,C++11引入了新的字符串类型std::u16string和std::u32string,分别用于存储UTF-16和UTF-32编码的字符串。
将这段代码转换成Oracle function的函数
将这段代码转换成 Oracle function 的函数需要进行以下步骤:
1. 声明函数名、输入参数和返回值类型。
2. 将 C++ 代码中用到的头文件和命名空间去掉,因为在 Oracle 中不需要。
3. 将 C++ 代码中用到的函数 `_rotl` 改为 Oracle 中对应的函数 `BITROTATELEFT`,使用方法和 C++ 中的 `_rotl` 类似。
4. 将 C++ 代码中用到的 `cout` 和 `system` 函数去掉,因为在 Oracle 中不需要。
根据以上步骤,可以将这段代码转换成 Oracle function 的函数如下:
```sql
CREATE OR REPLACE FUNCTION Murmurhash3(input_data VARCHAR2, seed NUMBER)
RETURN NUMBER
IS
h NUMBER := seed;
c1 NUMBER := 0xcc9e2d51;
c2 NUMBER := 0x1b873593;
r1 NUMBER := 15;
r2 NUMBER := 13;
m NUMBER := 5;
n NUMBER := 0xe6546b64;
blkNums NUMBER := TRUNC(LENGTH(input_data) / 4);
remaining_bytes VARCHAR2(4);
k NUMBER := 0;
BEGIN
FOR i IN 0..blkNums-1 LOOP
DECLARE
s VARCHAR2(4);
res NUMBER := 0;
BEGIN
s := SUBSTR(input_data, i*4+1, 4);
FOR j IN 0..3 LOOP
res := res + ASCII(SUBSTR(s, j+1, 1)) * POWER(2, 24-j*8);
END LOOP;
res := BITROTATELEFT(res * c1, r1);
res := BITROTATELEFT(res * c2, r2);
h := h * m + n;
END;
END LOOP;
remaining_bytes := SUBSTR(input_data, blkNums*4+1, LENGTH(input_data)-blkNums*4);
CASE LENGTH(remaining_bytes)
WHEN 1 THEN k := ASCII(SUBSTR(remaining_bytes, 1, 1));
WHEN 2 THEN k := ASCII(SUBSTR(remaining_bytes, 1, 1)) + ASCII(SUBSTR(remaining_bytes, 2, 1)) * POWER(2, 8);
WHEN 3 THEN k := ASCII(SUBSTR(remaining_bytes, 1, 1)) + ASCII(SUBSTR(remaining_bytes, 2, 1)) * POWER(2, 8) + ASCII(SUBSTR(remaining_bytes, 3, 1)) * POWER(2, 16);
END CASE;
k := BITROTATELEFT(k * c1, r1);
k := BITROTATELEFT(k * c2, r2);
h := h XOR k;
h := h XOR LENGTH(input_data);
h := BITROTATELEFT(h, 16) XOR h;
h := BITROTATELEFT(h * 0x85ebca6b, 13);
h := BITROTATELEFT(h * 0xc2b2ae35, 16) XOR h;
RETURN h;
END;
/
```
注意:这段代码中使用了 Oracle 内置函数 `ASCII` 和 `POWER`,前者用于将字符转换为 ASCII 码,后者用于计算幂次方。另外,这段代码中使用了 `BITROTATELEFT` 函数,它是一个自定义函数,用于实现 C++ 代码中的 `_rotl` 函数的功能。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![7z](https://img-home.csdnimg.cn/images/20210720083312.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)